ImageButton 更改:新图像绘制在原始图像之上
ImageButton change: the new image is plotted on top of original image
我正在尝试在按下按钮时更改 ImageButton 的图像。这是我的代码:
在我的 activity_main.xml
我有:
<ImageButton
android:id="@+id/my_btn"
app:srcCompat="@drawable/btn_icon1" />
在我的 MainActivity.java
我有:
int myBtnState = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
myButton = (ImageButton) findViewById(R.id.my_btn);
myButton.setOnClickListener(this);
...
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_btn:
changeIcon();
break;
...
private void changeIcon() {
if(myBtnState == 0) {
myButton.setBackgroundResource(R.drawable.btn_icon1);
myBtnState = 1;
} else {
myButton.setBackgroundResource(R.drawable.btn_icon2);
myBtnState = 0;
}
}
当我按下按钮时 运行 这段代码,它看起来像第一次 btn_icon1
被绘制在自身之上 2 次,因为它有一个半透明的背景我看到了变暗。下次我按下按钮时 btn_icon2
被绘制在 btn_icon1
之上。我希望使用此代码更改图标,而不是在彼此之上绘制。我这里有什么地方做错了吗?
我找到了答案:
我当时正在设置图像的背景:
myButton.setBackgroundResource(R.drawable.btn_icon1);
相反,我应该这样做:
myButton.setImageResource(R.drawable.btn_icon1);
我正在尝试在按下按钮时更改 ImageButton 的图像。这是我的代码:
在我的 activity_main.xml
我有:
<ImageButton
android:id="@+id/my_btn"
app:srcCompat="@drawable/btn_icon1" />
在我的 MainActivity.java
我有:
int myBtnState = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
myButton = (ImageButton) findViewById(R.id.my_btn);
myButton.setOnClickListener(this);
...
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_btn:
changeIcon();
break;
...
private void changeIcon() {
if(myBtnState == 0) {
myButton.setBackgroundResource(R.drawable.btn_icon1);
myBtnState = 1;
} else {
myButton.setBackgroundResource(R.drawable.btn_icon2);
myBtnState = 0;
}
}
当我按下按钮时 运行 这段代码,它看起来像第一次 btn_icon1
被绘制在自身之上 2 次,因为它有一个半透明的背景我看到了变暗。下次我按下按钮时 btn_icon2
被绘制在 btn_icon1
之上。我希望使用此代码更改图标,而不是在彼此之上绘制。我这里有什么地方做错了吗?
我找到了答案:
我当时正在设置图像的背景:
myButton.setBackgroundResource(R.drawable.btn_icon1);
相反,我应该这样做:
myButton.setImageResource(R.drawable.btn_icon1);