如何在每次点击时更改按钮的图像?

Posted

技术标签:

【中文标题】如何在每次点击时更改按钮的图像?【英文标题】:how to change the image of a button with every click? 【发布时间】:2012-05-15 06:21:17 【问题描述】:

我在 layout 中创建了一个 button 。在Drawable 文件夹中,我创建了一个名为btn01_stateXML filebtn01_state.xml 分配给我通过“android:background=@drawable/btn01_state”创建的button

现在,button 有一个默认的image img1。当我在buttonclick 时,image1 更改为 img2,一旦我松开单击的鼠标按钮,image2 再次更改为 img1 .

我想要做的是,通过每一次点击来改变按钮的图像。

例如,最初 btn01 有 img01

如果 btn01 被按下==> 将 btn01 的 img 设置为 img02 并保持 img02 直到 btn01 再次被按下。现在,btn01 上面有 img02。

按下 btn01 时,将 img01 设置为 btn01。

我希望这能更清楚地说明我想要做什么。

btn_selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/android_blue"
      android:state_pressed="true" />
<item android:drawable="@drawable/ic_launcher"
      android:state_focused="true" />
<item android:drawable="@drawable/ic_launcher" />

ma​​in.xml

<Button 
    android:layout_
    android:layout_
    android:id="@+id/btn01"
    android:background="@drawable/btn01_state"/>

【问题讨论】:

【参考方案1】:

您可以在代码中轻松完成。

boolean isPressed = false;
button.setOnClickListener(buttonListener);

OnClickListener buttonListener = new OnClickListener() 
    @Override
    public void onClick(View v) 
        if(isPressed)
           button.setBackgroundResource(R.drawable.icon1);
        else
           button.setBackgroundResource(R.drawable.icon2);

        isPressed = !isPressed;
   
;

【讨论】:

不适用于我。它仅在按下按钮时调用 onClick,而不是在释放按钮时调用。所以每次点击它只会做一个分支。 @ZdravkoDonev - 这是因为操作要求如何通过点击而不是触摸来更改按钮图像。如果您想更改按钮状态,您可能应该检查此链接 - ***.com/a/14024007/1376688【参考方案2】:

简单的方法

btn.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View arg0) 
                // TODO Auto-generated method stub
    btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.locationbutton_on));
                
        ); 

【讨论】:

【参考方案3】:

也许可以用代码编写。在按钮上放置一个监听器,当按钮被点击时,背景会改变。

【讨论】:

以上是关于如何在每次点击时更改按钮的图像?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何在点击时更改按钮的图像?

每次在 Xcode 4.3 中点击按钮时,如何更改按钮的标题?

在swift UI中点击按钮时如何更改背景颜色和图像?

Swift:如何在单击提交按钮时更改 UIButton 图像

在kivy中单击时如何更改按钮的背景图像?

单击下一步按钮如何更改图像