首页 > 技术文章 > Android开发 Switch

guanxinjing 2022-05-26 15:49 原文

前言

  讲解基本Switch的使用与记录一些开发点子

  转载请注明来源:https://www.cnblogs.com/guanxinjing/p/16313742.html

基本属性

  • android:showText:设置on/off的时候是否显示文字,boolean
  • android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
  • android:switchMinWidth:设置开关的最小宽度
  • android:switchPadding:设置滑块内文字的间隔
  • android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用...
  • android:textOff:按钮没有被选中时显示的文字
  • android:textOn:按钮被选中时显示的文字
  • android:textStyle:文字风格,粗体,斜体写划线那些
  • android:track:底部的图片
  • android:thumb:滑块的图片

设置状态监听

        mBinding.timeFormatSwitch.setOnCheckedChangeListener { switchView, isChecked ->
            if (switchView.isPressed){
                
            }
        }

自定义Switch

效果图

背景xml

要做到滑块thumb大于背景的关键是android:top 与 android:bottom(注意是item里的属性)这里的属性类似于 android:layout_marginTop

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <layer-list>
            <item android:top="3dp"
                android:bottom="3dp">
                <shape
                    android:shape="rectangle">
                    <corners android:radius="10dp"/>
                    <gradient
                        android:type="linear"
                        android:angle="0"
                        android:startColor="#48F3D0"
                        android:endColor="#1DBBFF"/>
                </shape>
            </item>
        </layer-list>

    </item>
    <item android:state_checked="false">
        <layer-list>
            <item android:top="3dp"
                android:bottom="3dp">
                <shape
                    android:shape="rectangle">
                    <corners android:radius="10dp"/>
                    <solid android:color="#646464"/>
                </shape>
            </item>
        </layer-list>

    </item>
</selector>

滑块xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size android:width="30dp" android:height="30dp"/>
    <solid android:color="#ffffff"/>
</shape>

在view里设置它们

        <androidx.appcompat.widget.SwitchCompat
            android:id="@+id/timeFormatSwitch"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:layout_marginEnd="35dp"
            app:track="@drawable/settings_selector_shape_rectangle_48f3d0_10dp"
            android:thumb="@drawable/settings_shape_oval_ffffff_30dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

 

 

 

 

 

 

End

推荐阅读