Подтвердить что ты не робот

Пользовательский интерфейс Android toggle

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

enter image description here

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

4b9b3361

Ответ 1

создать toggle_selector.xml в res/drawable

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

Ответ 2

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

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

2.- Создайте набор значков 56px-76px для mdpi, 84px-113px hdpi, то же самое для 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="" />

Ответ 3

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

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

Ответ 4

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

Однако на шаге 3 создайте новый 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" является то, что определяет это состояние как проверенный фон.

Сообщите мне, если это сработает для вас.