如何拥有棒棒糖开关按钮

sto*_*fln 20 android android-switch android-5.0-lollipop

我想为我的应用程序设置Lollipop样式开关按钮:

在此输入图像描述

我怎么能实现这个按钮所以在旧版本的android上看起来也是如此?

dzi*_*kyy 44

要在旧版本的android上使用Lollipop样式切换按钮,您应该在布局xml文件中使用SwitchCompat

<android.support.v7.widget.SwitchCompat
        android:id="@+id/compatSwitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

还有在java文件中

SwitchCompat switchCompat = (SwitchCompat) findViewById(R.id.compatSwitch);
Run Code Online (Sandbox Code Playgroud)

  • 此外,您可以删除使用以下代码选择开关时出现的丑陋灰色背景:android:background ="@ null" (3认同)

ch3*_*anz 11

首先android:targetSdkVersion="22"在您的清单中设置,以使您的应用与Lollipop兼容.

注意:开关的颜色取决于此

<item name="android:colorAccent">@color/accent</item>
Run Code Online (Sandbox Code Playgroud)

在文件夹值-v21中的styles.xml中为您的应用程序创建自己的主题

<?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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Wil*_*lis 10

Android开发者博客上有一篇很棒的文章讨论了如何在Lollipop前设备上使用材料设计:http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre html的

要更具体地回答您的问题,您可以使用SwitchCompatAPI 为旧版本使用Lollipop样式开关:https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html

  • 很棒的答案!有关SwitchCompat的样式,请访问:http://stackoverflow.com/a/26715076/457059 (2认同)

A.G*_*AYS 5

关闭开关上的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"/>
Run Code Online (Sandbox Code Playgroud)