我尝试在侦听器中使用此代码更改按钮的onClick图像
public void onClick(View v) {
if(v==ButtonName)
ButtonName.setImageResource(R.drawable.clicked_button_image);
//action code
}
按钮的图像以这种方式正确更改,但是如果有人使用Android设备的后退按钮,该按钮会显示点击的图像(因为显然显示了上一个活动的最后一个实例) )
如果我尝试使用代码:
public void onClick(View v) {
if(v==ButtonName)
ButtonName.setImageResource(R.drawable.clicked_button_image);
ButtonName.setImageResource(R.drawable.unclicked_button_image);
//action code
}
按钮的图像不会改变。
我怎么能解决这个问题? (不编辑xml)。
答案 0 :(得分:0)
单击后退按钮后返回怎么办?
@Override
public boolean onRestore()
{
if(unclickedImageDisplayed)
{
ButtonName.setImageResource(R.drawable.unclicked_button_image);
}
}
如果您查看documentation和活动生命周期,则可以看到在您返回活动时调用方法on Restore
。
也许通过在更改按钮背景时更改一个私有变量,并通过检查此布尔值,例如,您可以更改按钮的背景,以编程方式为其提供初始状态。
答案 1 :(得分:0)
要达到这个效果,请尝试以下方法:
你必须在drawable文件夹中创建一个新的xml :(我叫做button_action)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/clicked_button_image" android:state_pressed="true"/>
<item android:drawable="@drawable/unclicked_button_image"/>
</selector>
布局中的:
<Button
android:id="@+id/infobtncontact"
style="@style/ButtonNormal"
android:layout_marginTop="10dp"
android:background="@drawable/button_action"
android:src="@drawable/unclicked_button_image" />
可能必须重新启动eclipse以识别更改。
请原谅我糟糕的英语!
答案 2 :(得分:0)
除非您解释为什么要使用此方法,否则您应该使用像这样的自定义按钮
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/clicked_button_image" /> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/focus_button_image" /> <!-- focused -->
<item android:drawable="@drawable/unclicked_button_image"/> <!-- default -->
</selector>