Android开发 Switch
<h1><span style="color: rgba(0, 128, 128, 1)">前言</span></h1><p><span style="color: rgba(0, 128, 128, 1)"> <span style="color: rgba(0, 0, 0, 1)"> 讲解基本Switch的使用与记录一些开发点子</span></span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><span style="color: rgba(0, 0, 0, 1)"> 转载请注明来源:https://www.cnblogs.com/guanxinjing/p/16313742.html</span></span></p>
<h1><span style="color: rgba(0, 128, 128, 1)">基本属性</span></h1>
<ul>
<li><strong>android:showText:</strong>设置on/off的时候是否显示文字,boolean</li>
<li><strong>android:splitTrack:</strong>是否设置一个间隙,让滑块与底部图片分隔,boolean</li>
<li><strong>android:switchMinWidth:</strong>设置开关的最小宽度</li>
<li><strong>android:switchPadding:</strong>设置滑块内文字的间隔</li>
<li><strong>android:switchTextAppearance:</strong>设置开关的文字外观,暂时没发现有什么用...</li>
<li><strong>android:textOff:</strong>按钮没有被选中时显示的文字</li>
<li><strong>android:textOn:</strong>按钮被选中时显示的文字</li>
<li><strong>android:textStyle:</strong>文字风格,粗体,斜体写划线那些</li>
<li><strong>android:track:</strong>底部的图片</li>
<li><strong>android:thumb:</strong>滑块的图片</li>
</ul>
<h1><span style="color: rgba(0, 128, 128, 1)">设置状态监听</span></h1>
<div class="cnblogs_code">
<pre> mBinding.timeFormatSwitch.setOnCheckedChangeListener { switchView, isChecked ->
<span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (switchView.isPressed){
}
}</span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">自定义Switch</span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">效果图</span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202205/1497956-20220526154342246-1107129607.gif" alt="" loading="lazy"></span></p>
<p>背景xml</p>
<p>要做到滑块thumb大于背景的关键是<strong>android:top 与 android:bottom</strong>(注意是item里的属性)这里的属性类似于 android:layout_marginTop</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">selector </span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">item </span><span style="color: rgba(255, 0, 0, 1)">android:state_checked</span><span style="color: rgba(0, 0, 255, 1)">="true"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">layer-list</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">item </span><span style="color: rgba(255, 0, 0, 1)">android:top</span><span style="color: rgba(0, 0, 255, 1)">="3dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:bottom</span><span style="color: rgba(0, 0, 255, 1)">="3dp"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">shape
</span><span style="color: rgba(255, 0, 0, 1)">android:shape</span><span style="color: rgba(0, 0, 255, 1)">="rectangle"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">corners </span><span style="color: rgba(255, 0, 0, 1)">android:radius</span><span style="color: rgba(0, 0, 255, 1)">="10dp"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">gradient
</span><span style="color: rgba(255, 0, 0, 1)">android:type</span><span style="color: rgba(0, 0, 255, 1)">="linear"</span><span style="color: rgba(255, 0, 0, 1)">
android:angle</span><span style="color: rgba(0, 0, 255, 1)">="0"</span><span style="color: rgba(255, 0, 0, 1)">
android:startColor</span><span style="color: rgba(0, 0, 255, 1)">="#48F3D0"</span><span style="color: rgba(255, 0, 0, 1)">
android:endColor</span><span style="color: rgba(0, 0, 255, 1)">="#1DBBFF"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">shape</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">layer-list</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">item </span><span style="color: rgba(255, 0, 0, 1)">android:state_checked</span><span style="color: rgba(0, 0, 255, 1)">="false"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">layer-list</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">item </span><span style="color: rgba(255, 0, 0, 1)">android:top</span><span style="color: rgba(0, 0, 255, 1)">="3dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:bottom</span><span style="color: rgba(0, 0, 255, 1)">="3dp"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">shape
</span><span style="color: rgba(255, 0, 0, 1)">android:shape</span><span style="color: rgba(0, 0, 255, 1)">="rectangle"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">corners </span><span style="color: rgba(255, 0, 0, 1)">android:radius</span><span style="color: rgba(0, 0, 255, 1)">="10dp"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">solid </span><span style="color: rgba(255, 0, 0, 1)">android:color</span><span style="color: rgba(0, 0, 255, 1)">="#646464"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">shape</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">layer-list</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">selector</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>滑块xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">shape </span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
android:shape</span><span style="color: rgba(0, 0, 255, 1)">="oval"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">size </span><span style="color: rgba(255, 0, 0, 1)">android:width</span><span style="color: rgba(0, 0, 255, 1)">="30dp"</span><span style="color: rgba(255, 0, 0, 1)"> android:height</span><span style="color: rgba(0, 0, 255, 1)">="30dp"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">solid </span><span style="color: rgba(255, 0, 0, 1)">android:color</span><span style="color: rgba(0, 0, 255, 1)">="#ffffff"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">shape</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>在view里设置它们</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.appcompat.widget.SwitchCompat
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/timeFormatSwitch"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="60dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="30dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginEnd</span><span style="color: rgba(0, 0, 255, 1)">="35dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:track</span><span style="color: rgba(0, 0, 255, 1)">="@drawable/settings_selector_shape_rectangle_48f3d0_10dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:thumb</span><span style="color: rgba(0, 0, 255, 1)">="@drawable/settings_shape_oval_ffffff_30dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>End</p>
</div>
<div id="MySignature" role="contentinfo">
<div style="text-align: center">
<p style="color:orange;font-size:16px;" >本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/16313742.html </p>
<div style="color:orange;font-size:16px;">本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。 </div>
</div><br><br>
来源:https://www.cnblogs.com/guanxinjing/p/16313742.html
頁:
[1]