1
Я пытаюсь установить фон ImageButton с помощью этого изображения: Как установить изображение в 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));
}
}
Но следующий результат получен:
Я хочу иметь правильно масштабированное изображение. Как мне это сделать? Может быть, есть лучший способ сделать это, используя какой-то другой класс, который можно щелкнуть, вместо ImageButton?
Спасибо за ответ! Для меня лучше всего подходит ImageView.ScaleType.CENTER_INSIDE. –