2015-02-18 4 views
1

Я пытаюсь установить фон ImageButton с помощью этого изображения: enter image description hereКак установить изображение в IMAGEBUTTON программно

и код:

OnCreate:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    LightImageButton lightImageButton = new LightImageButton(false, getApplicationContext()); 
    ImageButton imageButton = (ImageButton) findViewById(R.id.imageButton); 
    imageButton.setBackground(getResources().getDrawable(lightImageButton.getCurrentImage())); 
    imageButton.setOnClickListener(lightImageButton); 

} 

Дополнительный класс:

public class LightImageButton implements View.OnClickListener { 
private static final int bulbOnImg = R.drawable.bulb_on; 
private static final int bulbOffImg = R.drawable.bulb_off; 
private boolean state; 
private Context context; 
private int currentImage; 

public LightImageButton(boolean state, Context context) { 
    this.state = state; 
    this.context = context; 
    currentImage = bulbOffImg; 
} 

public int getCurrentImage() { 
    return currentImage; 
} 

@Override 
public void onClick(View v) { 
    ImageButton btn = (ImageButton) v; 

    if (state) { 
     currentImage = bulbOnImg; 
    } else { 
     currentImage = bulbOffImg; 
    } 
    state = !state; 
    btn.setBackground(context.getResources().getDrawable(currentImage)); 
} 
} 

Но следующий результат получен: enter image description here

Я хочу иметь правильно масштабированное изображение. Как мне это сделать? Может быть, есть лучший способ сделать это, используя какой-то другой класс, который можно щелкнуть, вместо ImageButton?

ответ

1

Изменить это:

imageButton.setBackground(getResources().getDrawable(lightImageButton.getCurrentImage())); 

С:

imageButton.setImageResource(R.drawable.your_bulb); 
imageButton.setScaleType(ImageView.ScaleType.CENTER_CROP); 

enter image description here

+0

Спасибо за ответ! Для меня лучше всего подходит ImageView.ScaleType.CENTER_INSIDE. –

Смежные вопросы