安卓:指定两个不同的图像切换按钮用于使用XML(Android: Specify two diffe

2019-07-21 06:57发布

我试图覆盖默认的ToggleButton的外观。 下面是定义XML的ToggleButton

<ToggleButton android:id="@+id/FollowAndCenterButton"
        android:layout_width="30px"
        android:layout_height="30px"
        android:textOn="" android:textOff="" android:layout_alignParentLeft="true"
        android:layout_marginLeft="5px"
        android:layout_marginTop="5px" android:background="@drawable/locate_me"/>

现在,我们有我们想要使用的点击/非点击的状态的两个30×30的图标。 现在,我们有一些代码依赖于编程状态变化的背景图标:

centeredOnLocation.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (centeredOnLocation.isChecked()) {
                centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on));
            } else {
                centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me));
            }
        }
});

很显然,我正在寻找一种更好的方式来做到这一点。 我试图做的背景图片,这将在状态之间自动切换选择:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/locate_me" /> <!-- default -->
 <item android:state_checked="true"
       android:drawable="@drawable/locate_me_on" /> <!-- pressed -->
 <item android:state_checked="false"
       android:drawable="@drawable/locate_me" /> <!-- unchecked -->

但是,这并不正常工作; 读取ToggleButton API( http://developer.android.com/reference/android/widget/ToggleButton.html ),似乎只有继承XML属性是

    XML Attributes
Attribute Name  Related Method  Description
android:disabledAlpha       The alpha to apply to the indicator when disabled. 
android:textOff         The text for the button when it is not checked. 
android:textOn      The text for the button when it is checked. 

似乎没有成为机器人:state_checked属性,尽管有方法的类isChecked()setChecked()

那么,有没有办法做我想做的XML,还是我坚持我凌乱的解决方法吗?

Answer 1:

您的代码是好的。 然而,切换按钮将显示在您选择的第一个项目,它相匹配,所以默认应该放在最后。 排列以下列方式中的项目,以确保它们都将被利用:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_pressed="true" /> //currently pressed turning the toggle on
    <item android:state_pressed="true" /> //currently pressed turning the toggle off
    <item android:state_checked="true" /> //not pressed default checked state
    <item /> //default non-pressed non-checked
</selector>


文章来源: Android: Specify two different images for togglebutton using XML