如何更改图像按钮的后台资源以实现开/关切换

时间:2013-03-28 06:21:27

标签: java android android-layout

我有两个电源按钮图像,一个是红色,另一个是绿色。我想创建一个按钮,将其背景资源设置为最初的红色电源按钮。我希望它的资源在被按下时变为绿色。再次点击后,我希望它再次变回红色。请帮忙......

4 个答案:

答案 0 :(得分:1)

使用ToggleButton。许多例子如here

答案 1 :(得分:1)

如何使用自定义开/关图形制作切换按钮

CheckBox与自定义选择器一起使用。

这将提供在已启用和禁用状态之间切换已检查和未检查图像的功能,而无需在Java代码中进行任何编程干预。

示例 - XML布局:

<CheckBox
    android:id="@+id/my_custom_toggle"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:button="@drawable/my_selector"
/>

示例 - drawable / my_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_checked="true"
    android:state_enabled="false"
    android:drawable="@drawable/ic_button_custom_toggle_disabled"
    />
<item
    android:state_checked="false"
    android:state_enabled="false"
    android:drawable="@drawable/ic_button_custom_toggle_disabled"
    />
<item
    android:state_checked="true"
    android:drawable="@drawable/ic_button_custom_toggle_linked"
    />
<item
    android:state_checked="false"
    android:drawable="@drawable/ic_button_custom_toggle_unlinked"
    />

为上述每种状态添加自定义.png图像。

答案 2 :(得分:1)

这样做:

<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   //check.xml
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>

在drawable文件夹中创建check.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

这完全没问题。

答案 3 :(得分:0)

您需要在可绘制文件夹中放置红色和绿色两个图像。

static int set = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ImageButton toggle = (ImageButton) findViewById(R.id.imageButton1);

    toggle.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(set==0)
            {
                toggle.setBackgroundResource(R.drawable.red);
                set=1;
            }
            else
            {
                toggle.setBackgroundResource(R.drawable.green);
                set=0;
            }

        }
    });
}