2013-08-20 2 views
40

Я пытался настроить внешний вид кнопки переключения, но без успеха. Вот как я хочу выглядеть следующим образом:Android toggle button пользовательский внешний вид

enter image description here

Может кто-нибудь дать мне учебник?

+0

см. Http://stackoverflow.com/questions/9752760/slide-toggle-for-android –

+0

не то, что я ищу Мне нужно что-то для 2.2 –

+0

Как сказал CWAC, Android - это с открытым исходным кодом, просто перейдите в источник 4 и воспользуйтесь функцией, которая вам нравится в вашем приложении, до 2.X –

ответ

1

Создать селектор

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

+0

Я продолжал пробовать это, но код показывает ошибку или ничего не делает, не могли бы вы пожалуйста, будьте более полными? Что именно мне нужно делать? Я вроде как новичок. –

1

Думаю, вам нужно определить пользовательский фон для вашей кнопки. Взгляните на Руководство разработчика по настройке Button's background.

Однако, на третьем этапе, создать новый файл XML в res/drawable/ directory Используйте этот 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" является то, что определяет, что состояние, как проверенного фоне.

Дайте мне знать, если это сработает для вас.

87

создать 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> 

применить селектор к вашему тумблера

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

Я не знаю, было ли это лучшим решением, но оно отлично работало для меня:

1.- Решите, насколько вы хотите, чтобы кнопка переключения. В моем случае ширина 56dp и высота 76dp.

2.- Создать значок набор 56px-76px для MDPI, 84px-113px ИПЧРА, то же самое для xhdpi и xxhdpi

3.- перемещать иконки в соответствующей папке вытяжки. В моем случае 20 иконок 5 в каждой папке, с именем ic_name1_on, ic_name1_off [...] ic_name5_off

4.- Создайте следующие XML-файлы в новую папку под названием Drawable (если он еще не существует):

  • 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="" /> 
Смежные вопросы