我有一个Button
名称Start
实际上Start
是我放在我的按钮中的图像作为背景android:background="@drawable/btn_stop
我想要做的就是按Start
按钮应将Start
图片替换为Stop
我可以使用btnStartStop.setBackgroundResource(R.drawable.btn_stop);
在Java代码中执行此操作,但我想这样做XML
使用selector
我使用了此代码
<Button
android:id="@+id/button_start_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginTop="10dip"
android:background="@drawable/btn_selector"/>
此处 btn_selector 是我在XML
文件夹中创建的drawable
文件
其中包含
的 btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/btn_stop"
android:state_pressed="true" />
<item android:drawable="@drawable/btn_start"/>
</selector>
但它只为ex创建了一个悬停效果:当我按Stop
一秒钟然后显示Start
后,它只显示Start
。
注意:我不想使用切换按钮
答案 0 :(得分:1)
您的选择器应该像,
<?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/switch_on" />
<item android:state_selected="true" android:drawable="@drawable/switch_on" />
<item android:drawable="@drawable/switch_off" /> <!-- default -->
</selector>
你的听众应该是,
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(button.isSelected())
{
button.setSelected(false);
}
else
{
button.setSelected(true);
}
}
});
答案 1 :(得分:0)
在最新版本的android studio 2.2.3中,这一行有效:
DYNAMIC_ELEMENT.setBackground( getDrawable( R.drawable.circle ) );
compileSdkVersion 25
buildToolsVersion "25.0.3"
minSdkVersion 21
targetSdkVersion 25
旧版本:
DYNAMIC_ELEMENT.setImageDrawable(getResources().getDrawable(R.drawable.image_bg));