如何在每次点击时更改按钮的图像?
Posted
技术标签:
【中文标题】如何在每次点击时更改按钮的图像?【英文标题】:how to change the image of a button with every click? 【发布时间】:2012-05-15 06:21:17 【问题描述】:我在 layout
中创建了一个 button
。在Drawable
文件夹中,我创建了一个名为btn01_state
的XML file
。 btn01_state.xml
分配给我通过“android:background=@drawable/btn01_state
”创建的button
现在,button
有一个默认的image
img1。当我在button
上click
时,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" />
main.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】:也许可以用代码编写。在按钮上放置一个监听器,当按钮被点击时,背景会改变。
【讨论】:
以上是关于如何在每次点击时更改按钮的图像?的主要内容,如果未能解决你的问题,请参考以下文章
每次在 Xcode 4.3 中点击按钮时,如何更改按钮的标题?