Как установить кнопку переключателя Lollipop

Я хочу, чтобы кнопка переключения стиля Lollipop для моего приложения:

enter image description here

Как я могу реализовать эту кнопку, чтобы она выглядела так же в старых версиях Android?

Ответы

Ответ 1

Сначала установите android:targetSdkVersion="22" в манифест, чтобы ваше приложение совместимо с Lollipop.

ПРИМЕЧАНИЕ: Цвет вашего переключателя зависит от этого

<item name="android:colorAccent">@color/accent</item>

Создайте собственную тему для своего приложения. styles.xml в папке значения-v21

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="AppTheme.Base">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        <item name="android:colorAccent">@color/accent</item>
        <item name="android:textColorPrimary">@color/text_primary</item>
        <item name="android:textColor">@color/text_secondary</item>
        <item name="android:navigationBarColor">@color/primary_dark</item>
        <item name="toolbarStyle">@style/Widget.AppCompat.Toolbar</item>
    </style>
</resources>

styles.xml в папке по умолчанию значения или значения-v14

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppTheme.Base">
        <!-- Customize your theme here. -->

        <item name="toolbarStyle">@style/Widget.AppCompat.Toolbar</item>
    </style>

    <style name="AppTheme.Base" parent="Theme.AppCompat">
        <!-- Customize your theme here. -->

        <!-- colorPrimary is used for the default action bar background -->
        <item name="colorPrimary">@color/primary</item>

        <!-- colorPrimaryDark is used for the status bar -->
        <item name="colorPrimaryDark">@color/primary_dark</item>

        <!-- colorAccent is used as the default value for colorControlActivated
             which is used to tint widgets -->
        <item name="colorAccent">@color/accent</item>

        <!-- You can also set colorControlNormal, colorControlActivated
             colorControlHighlight & colorSwitchThumbNormal. -->
    </style>

</resources>

Ответ 2

Чтобы установить кнопку переключения стиля Lollipop на более старые версии Android, вы должны использовать SwitchCompat в макете xml файла

<android.support.v7.widget.SwitchCompat
        android:id="@+id/compatSwitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

а также в java файле

SwitchCompat switchCompat = (SwitchCompat) findViewById(R.id.compatSwitch);

Ответ 3

В блоге разработчиков Android есть замечательная статья, в которой обсуждается, как использовать дизайн материалов на устройствах до Lollipop: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Чтобы более точно ответить на ваш вопрос, вы можете использовать переключатель стиля Lollipop для более старых версий с помощью API SwitchCompat: https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html

Ответ 4

API 24 на выключатель

<android.support.v7.widget.SwitchCompat
    android:id="@+id/switch1"
    android:layout_alignBottom="@+id/textView3"
    android:layout_alignEnd="@+id/input_layout_password"
    android:layout_alignRight="@+id/input_layout_password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

Ответ 5

Я думаю, что вам нужно в этой библиотеке

то, что делает эта библиотека, позволяет вам создать кнопку переключателя дизайна материала, как в andorid 5.0

https://github.com/kyleduo/SwitchButton

Ответ 6

Мы используем SwitchCompact в версии lollipop или вы можете использовать Обновленную версию lolliopop лучше

<android.support.v7.widget.SwitchCompat
    android:id="@+id/compatSwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/switch2"
    android:layout_alignLeft="@+id/switch2"
    android:layout_alignStart="@+id/switch2"
    android:layout_marginTop="39dp" />

Ответ 7

Чтобы разрешить старый тип переключателя

switch_old

  1. обновите ваши minsdkversion и targetdkversion до 19 и 28 соответственно.
    1. 2.