Android Imagebutton change Изображение OnClick
Я только что добавил новую папку с возможностью перемещения по папке res. В скользящей папке я скопировал файл ic_launcher.png из папки drawable-hdpi.
Я хочу изменить стандартное изображение ImageButton через новое, когда нажимаю кнопку. Я написал код, но когда я запускаю приложение, он сработает.
Button imgButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
imgButton.setBackgroundResource(R.drawable.ic_launcher);
}
};
EDIT: я изменил это, и это тоже не работает.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
imgButton.setBackgroundResource(R.drawable.ic_launcher);
}
};
ИЗМЕНИТЬ 2: ЭТО РАБОТЫ. Спасибо всем.
ImageButton button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (ImageButton)findViewById(R.id.imgButton);
button.setOnClickListener(imgButtonHandler);
}
View.OnClickListener imgButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
button.setBackgroundResource(R.drawable.ic_launcher);
}
};
Ответы
Ответ 1
это немного меня обмануло - это должно быть "setImageResource" вместо "setBackgroundResource" :)!!
Следующее прекрасно работает:
ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);
btn.setImageResource(R.drawable.actions_record);
а при использовании setBackgroundResource
фактическое изображение
остается при изменении фонового изображения, ведьма ведет к уродливому объекту imagebutton.
Спасибо.
Ответ 2
Это потому, что imgButton имеет значение null.
Вместо этого попробуйте:
findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);
или гораздо легче читать:
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
то в onClick: imgButton.setBackgroundResource(R.drawable.ic_action_search);
Ответ 3
<ImageButton android:src="@drawable/image_btn_src" ... />
image_btn_src.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>
Ответ 4
Вы можете сделать это прямо в своем XML файле:
android:onClick="@drawable/ic_action_search"
Ответ 5
У вас есть кнопка подтверждения для вашей переменной imgButton
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
}