android - ImageButton 更改 : the new image is plotted on top of original image

标签 android image onclick imagebutton

我试图在按下按钮时更改 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);

关于android - ImageButton 更改 : the new image is plotted on top of original image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858592/

相关文章:

Javascript:在div内的图像顶部接收onClick,可以完成吗?

javascript - <A>nchor 的 href 被包含 <div> 的 onclick 覆盖

android - "Gradle Version 2.10 is required."错误

android - 如何为纵向和横向指定不同的布局?

android - 如何在android中从android设备上的usb设备读取数据?

javascript - 是否可以仅通过 Javascript 获取外部图像并通过 REST API 发送它?

c# - 将网页从 ASP.NET 转换为图像

android - 多个列表复选框搞砸了

php - 直接从 URL 将图像复制到我的服务器并将其上传到 Wordpress 上传文件夹?

javascript - 单击时的 css3 动画