Кнопка Android Toggle – дизайн материалов

Как реализовать кнопки Toggle, как указано в руководстве по дизайну материалов здесь ?

Доступно ли это из коробки из библиотеки поддержки дизайна Android или существует ли какая-либо сторонняя библиотека?

    Поддержка текущей библиотеки: Нет.

    Что касается библиотеки поддержки v23.2, то текущая реализация ToggleButton не ведет себя и не имеет стиля, как указано в ссылках на Руководство по разработке материалов.

    Материальные рекомендации:

    Образец Кнопка переключения материала

    Современная стилистика библиотеки поддержки:

    Текущая библиотека поддержки ToggleButton

    Обратите внимание, что кнопки не встречаются вместе в группах, окруженных закругленными границами, вместо значков используется текст, а цвет акцента используется как подчеркивание вместо темного фона, указывающего статус «включено».

    Есть ли внешняя библиотека: Пока нет.

    Я не знаю какой-либо стандартной библиотеки defacto для реализации Material ToggleButton, но, вероятно, есть несколько небольших, едва протестированных, там? К сожалению, Stackoverflow обескураживает ответы, которые являются лишь ссылками на внешние сторонние библиотеки. Таким образом, вам нужно будет искать самостоятельно или создать собственное представление для реализации текущих руководств по разработке материалов.

    Я также довольно долго искал что-то вроде ToggleButtonBar .

    Материальные рекомендации: Образец Кнопка переключения материала

    Я смог добиться этого, злоупотребляя RadioButtons:

    Введите описание изображения здесь

    Чтобы достичь этого единственного выбора ButtonBar, я создал стиль ToggleButton для переключателей и создал RadioGroup.

    Добавьте это в свои res / values ​​/ styles.xml :

     <style name="ToggleButton" parent="@android:style/Widget.CompoundButton.RadioButton"> <item name="android:foreground">?attr/selectableItemBackground</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">32dp</item> <item name="android:background">@drawable/toggle_background</item> <item name="android:button">@null</item> <item name="android:paddingLeft">8dp</item> <item name="android:textAllCaps">true</item> <item name="android:paddingRight">8dp</item> </style> 

    Для фона ColorStateList создайте res / drawable / toogle_background.xml :

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_window_focused="false"> <color android:color="@color/toggle_hover" /> </item> <item android:state_checked="false" android:state_window_focused="false"> <color android:color="@color/toggle_normal" /> </item> <item android:state_checked="true" android:state_pressed="true"> <color android:color="@color/toggle_active" /> </item> <item android:state_checked="false" android:state_pressed="true"> <color android:color="@color/toggle_active" /> </item> <item android:state_checked="true" android:state_focused="true"> <color android:color="@color/toggle_hover" /> </item> <item android:state_checked="false" android:state_focused="true"> <color android:color="@color/toggle_normal_off" /> </item> <item android:state_checked="false"> <color android:color="@color/toggle_normal" /> </item> <item android:state_checked="true"> <color android:color="@color/toggle_hover" /> </item> </selector> 

    Добавьте свои res / values ​​/ colors.xml :

     <color name="toggle_hover">@color/gray</color> <color name="toggle_normal">@color/gainsboro</color> <color name="toggle_active">@color/silver</color> <color name="toggle_normal_off">@color/darkgray</color> <color name="gainsboro">#DCdCdC</color> <color name="silver">#C0C0C0</color> <color name="darkgray">#a9a9a9</color> <color name="gray">#808080</color> 

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

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" app:cardCornerRadius="2dp" app:cardElevation="2dp"> <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton style="@style/ToggleButton" android:text="First" /> <RadioButton style="@style/ToggleButton" android:text="Second" /> <RadioButton style="@style/ToggleButton" android:text="Third" /> </RadioGroup> </android.support.v7.widget.CardView> </LinearLayout> 

    Я использовал CardView в качестве обертки для группы, чтобы достичь округлых углов. К сожалению, в версиях Android ниже Lollipop закругленные углы приведут к заполнению карты CardView. Вы можете точно применить свой собственный стиль здесь с другими цветами или значками, а не с текстом или обоими. Просто создайте свои собственные списки состояний для этих случаев.

    Требования к кнопке переключения:

    • Есть как минимум три кнопки переключения в группе
    • Кнопки с текстом, значком или обоими

    Рекомендуются следующие комбинации:

    • Множественный и невыбранный
    • Эксклюзивные и невыбранные
    • Только эксклюзивные

    ПРИМЕЧАНИЕ. Для использования CardView вам необходимо добавить его зависимость от ваших файлов build.gradle.

     compile 'com.android.support:cardview-v7:25.0.1' 

    Я надеюсь это тебе поможет!

    http://takeoffandroid.com/android-views/material-toggle-switch-using-appcompat-v7/

    Импортировать:

     import android.support.v7.widget.SwitchCompat; import android.widget.CompoundButton; swt = (SwitchCompat)findViewById(R.id.Switch); swt.setOnCheckedChangeListener (this); swt.setChecked (true); 

    Слушатель:

     @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.Switch: if(!isChecked){ Toast.makeText (SwitchActivity.this,"Err Switch is off!!",Toast.LENGTH_SHORT).show (); }else{ Toast.makeText (SwitchActivity.this,"Yes Switch is on!!",Toast.LENGTH_SHORT).show (); } break; default: break; } } 

    XML:

     <android.support.v7.widget.SwitchCompat android:id="@+id/Switch" android:layout_width="match_parent" android:layout_height="wrap_content" android:textOff="" android:text="Toggle Switch" android:background="@android:color/transparent" android:textColor="@color/secondary_text" android:textOn="" android:button="@null" android:padding="20dp"/> 

    Я создал библиотеку ToggleButton, которая придерживается принципов Material Design:

    https://github.com/rcketscientist/ToggleButtons

    compile 'com.anthonymandra:ToggleButtons:2.0.0'

    Введите описание изображения здесь

    Intereting Posts
    Панель прогресса Android в кнопке Динамически обновлять TextView в Android Выделение длинного типа C ++ для JNI jlong Невозможно изменить размер дочерних элементов линейной раскладки в встроенном модуле android Преобразование изображения в PDF в Android Какое свойство контролирует выпадающий фон Spinner? Как сделать линейную раскладку прокручиваемой? Как распечатать запрос, выполненный методом query () для android Создание обработчика обратного вызова для обработки нескольких обратных вызовов в Android Как отключить даты до сегодняшнего дня в DatePickerDialog Android? Расстояние между Android и iphone Две службы с одним и тем же фильтром намерений Как получить requestCode от ожидающего намерения во время тревоги в android Я хочу, чтобы мой RecyclerView не перерабатывал некоторые элементы В J2ME и Android, какой из них более полезен, полезен и популярен как мобильный язык программирования или каркас?