Android切换button的自定义外观

我一直在尝试自定义切换button的外观,但没有成功。 以下是我想要的样子:

在这里输入图像说明

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

在res / drawable中创buildtoggle_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> 

将select器应用于切换button

 <ToggleButton android:id="@+id/chkState" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_selector" android:textOff="" android:textOn=""/> 

注意:用于删除我在以上代码中使用的文本

 textOff="" textOn="" 

我不知道这是否是最好的解决scheme,但它对我来说工作得很好:

1.-决定你想要多大的切换button。 在我的情况下,宽度56dp和高度76dp。

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

3.-将图标移动到相应的可绘制文件夹中。 在我的情况下,每个文件夹中的20个图标5名为ic_name1_on,ic_name1_off […] ic_name5_off

4.-在一个名为drawable的新文件夹中创build以下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> 

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> 

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="" /> 

创buildselect器

 <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> 

并将其用作ToggleButton的背景。

我认为你需要为你的button定义一个自定义的背景。 看看在开发者指南定制一个button的背景 。

但是,在第三步中,在res/drawable/ directory创build一个新的XML文件使用这个Xml:

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

元素android:state_checked="true"是将该状态定义为选中的背景。

让我知道这是否适合你。