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"
是将该状态定义为选中的背景。
让我知道这是否适合你。