Android切换按钮自定义外观

Mih*_*scu 47 customization android styles togglebutton

我一直在尝试自定义切换按钮外观,但没有成功.这是我希望它看起来像:

在此输入图像描述

有人可以给我一个教程吗?

Mel*_*pes 104

在res/drawable中创建toggle_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/toggle_on" android:state_checked="true"/>
  <item android:drawable="@drawable/toggle_off" android:state_checked="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

将选择器应用于切换按钮

<ToggleButton
            android:id="@+id/chkState"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_selector"
            android:textOff=""
            android:textOn=""/>
Run Code Online (Sandbox Code Playgroud)

注意:删除上面代码中使用的文本

textOff=""
textOn=""
Run Code Online (Sandbox Code Playgroud)


Iri*_*dio 7

我不知道这是否是最佳解决方案,但对我来说效果很好:

1.-决定切换按钮有多大.在我的情况下宽度56dp和高度76dp.

2.-为mdpi,84px-113px hdpi创建图标集56px-76px,xhdpi和xxhdpi相同

3.-移动相应可绘制文件夹中的图标.在我的例子中,每个文件夹中有20个图标5,名为ic_name1_on,ic_name1_off [...] ic_name5_off

4.-在名为drawable的新文件夹中创建以下xml文件(如果它尚不存在):

  • ic_name1_toggle.xml
  • ic_name1_toggle_bg.xml
  • ic_name2_toggle.xml
  • (......)
  • ic_name5_toggle_bg.xml

5.-在ic_name1_toggle.xml中,代码必须是:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="false"
        android:drawable="@drawable/ic_name1_off" />
    <item
        android:state_checked="true"
        android:drawable="@drawable/ic_name1_on" />
</selector>
Run Code Online (Sandbox Code Playgroud)

6.-在ic_name1_toggle_bg.xml代码必须是:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@+android:id/background"
         android:drawable="@android:color/transparent" />
   <item android:id="@+android:id/toggle"
         android:drawable="@drawable/ic_name1_toggle" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

7.-最后,在你的layout.xml:

<ToggleButton
                android:id="@+id/toggleButton1"
                android:layout_width="56dp"
                android:layout_height="76dp"
                android:background="@android:color/transparent"
                android:button="@drawable/ic_name1_toggle_bg"
                android:textOff=""
                android:textOn="" />
Run Code Online (Sandbox Code Playgroud)


dan*_*nik 0

创建选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_da" android:state_checked="true"/>
    <item android:drawable="@drawable/btn_nu"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

并将其用作切换按钮的背景。