在不同状态下使用两个图像切换按钮

MBM*_*BMJ 98 android togglebutton

我需要使用两个图像而不是ON/OFF状态来设置切换按钮.

在关闭状态下我设置了背景图像.但是当我使用背景图像时,无法删除OFF文本.

而且我无法通过点击切换按钮在ON状态下设置另一个图像:(我是android的新手.我希望你们帮助我摆脱这个问题

Aka*_*shG 214

做这个:

<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"/>
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

  • 你有背景被拉伸的问题吗? (18认同)
  • 由于看起来其他人也有这个问题,我在这里添加我的解决方案.添加`android:background ="@ null"`和`android:drawableRight ="@ drawable/check"`.通常我发现切换按钮是右对齐的.如果你需要左对齐,请使用`android:drawableLeft` (8认同)
  • android:textOn =“” android:textOff =“”是我一直在寻找的东西 (2认同)
  • @Patrick但是如果你想让它居中对齐怎么办?......在所有设备上。所以我们不要讨论边距和填充。 (2认同)

Mis*_*een 46

AkashG的解决方案对我不起作用.当我将check.xml设置为背景时,它只是在垂直方向上划线.要解决此问题,您应该将check.xml设置为"android:button"属性:

<ToggleButton 
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/check"   //check.xml
    android:background="@null"/>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

  • ToggleButton有父Compoundbutton.而CompoundButton有android:button属性:http://developer.android.com/reference/android/R.styleable.html#CompoundButton_button (10认同)
  • 这应该是正确的答案.接受的答案导致拉伸的drawables. (3认同)