【问题标题】:ImageButton change: the new image is plotted on top of original imageImageButton 更改:新图像绘制在原始图像之上
【发布时间】:2017-12-17 19:20:04
【问题描述】:

我试图在按下按钮时更改 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 之上。我希望使用此代码更改图标,而不是相互叠加。我在这里做错了什么吗?

【问题讨论】:

    标签: android image onclick imagebutton


    【解决方案1】:

    我找到了答案:

    我当时正在设置图像的背景:

    myButton.setBackgroundResource(R.drawable.btn_icon1);
    

    相反,我应该这样做:

    myButton.setImageResource(R.drawable.btn_icon1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2021-05-05
      相关资源
      最近更新 更多