如何动态更改按钮的背景图像?

时间:2013-05-24 06:28:21

标签: android button

我有一个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

注意:我不想使用切换按钮

2 个答案:

答案 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));