在上两章,小白简单介绍了一下android内建控件中TextView, Button以及Checkbox的基础用法,具体请见:
在这一章,小白将略微介绍一下Switch即所谓的切换按钮的基础用法。Switch是小白比较喜欢的一个控件,在某些场景上表现得很简洁明了,直中主题,例如事物的状态,开关等。所以通常在较少的选项的情况下,我通常会选择使用多个Switch代替Checkbox。言归正传,让我们开始了解一下Switch吧。Switch和Checkbox按道理来说师出同门,其用法跟Checkbox应该差不多。事实也确实如此,Switch和Checkbox大体使用可谓如出一则。但是在一些个性化定制上,Switch和Checkbox却又迥然不同。首先让我们了解一下Switch的组成结构,这还是很有必要的,如下图所示:
图1 Switch组成结构
如上图所示,android中Switch大体分为两个部分:text(文本)和 button(按钮),而button部分在Switch可以分为更为细致的两部分:track(滑轨)和 thumb(指示按钮)。如上图所示,thumb会随着Switch的check状态而改变,所以千万不要认为thumb就是指check为true时候上图深绿色圆圆的按钮。其实不是,它只是指圆圆的按钮,但是圆圆的按钮会随check的状态改变颜色和位置。千万别搞错了。thumb同样可以显示文本,同样根据Switch的check状态,在check为true的时候,则显示textOn属性中的文本。而在check为false的时候,则显示textOff属性中的文本。Switch的基本结构我想大家应该已经清楚。那么让我们来熟悉一下Switch的基本用法。
- 设置文本
对于Switch的text属性设置,小白就不再累述了。如果想了解text属性的具体用法,请参见第一章小白7码-android原生开发皮毛系列-TextView。这里主要介绍Switch的thumb文本的设置即图1中的“是”与“否”。
- showText属性:通过showText可以控制Switch的thumb的文本显示或不显示。这个属性再Android API 21+起作用.
- textOn与textOff属性:textOn与textOff属性用于设置Switch控件在check为true和false的状态下的文本。在Android API 21(不包括)以下版本,通过设置这两个属性设置就可以控制thumb文本的显示,而无需借助showText。而在Android API 21+版本,则需要showText控制属性配合使用。
- switchTextAppearance属性:用于控制textOn与textOff的文本样式。记得不用通过style或者textAppearance设置thumb文本的样式。同时switchTextAppearance只接受文本类属性例如字体,字体颜色等,不接受任何布局或者其他不属于文本的属性。
下面我们以上面一个实例,但是设置一个蓝色文本为例.
-
在colors.xml文件添加switch文本颜色。
< color name="switchColor">#2457DA</ color>
-
在styles.xml文件中添加一个style用于switchTextAppearance。
<item name="android:textColor">@color/switchColor</item> <item name="android:textSize">12dp</item> <item name="android:textStyle">bold</item> -
在strings.xml文件添加on和off的文本
< string name="switchTextOn">是</ string> < string name=“switchTextOff">否</ string>
-
给switch设置switchTextAppearance和文本
最后,对于Switch默认的thumb文本设置我要说一点,Switch的thumb大小并不会随文本多少而变化,相反thumb的大小默认是固定的。所以请谨慎选择文本,确定文本字数,最好用单字。如果设置过多的文本,那么控件显示如下:
图3 thumb过多文本
- 个性化定制
Switch控件的个性化定制是小白必讲的一节。但是对于Switch的个性化定制或者准确的说是Switch的track和thumb的个性化定制小白目前也是一知半解。小白只能将自己领悟的一些给大家介绍一下。就如上面小节提到的,thumb默认大小固定,但是如果你需要个可以包裹较多文字的thumb通常需要自定义。然后请大家记住下面的公式:
track****的大小 **= thumb****大小(包括文字部分)**x 2
即Switch按钮部分的大小大体是thumb大小的两倍,所以不要通过layout_width或者width属性来控制Switch按钮部分的大小。这两个属性有可能会让你得到一个被裁减掉一部分的奇怪的Switch按钮。
那么让我们以下图的例子为模版,学习一下Switch的个性化定制。
图4 类IOS切换按钮
-
在colors.xml定义必要的颜色分别用于track滑轨的颜色,thumb在check为true和false下按钮的颜色:
< color name="colorButton">#5080FB</ color> < color name="colorButtonDark">#2457DA</ color>
< color name="colorGray">#cccccc</ color> < color name="colorDarkGray">#555555</ color>
-
新建一个shape资源文件用于switch的track背景,并设置高度和圆角,切记不要设置宽度,会出现奇怪的显示。
-
新建一个selector资源文件用于switch的thumb按钮。
-
给Switch应用track和thumb背景
通过上述步骤你就可以得到一个IOS相仿的Switch。通过track属性和thumb你可以定制多数你想要的个性化要求。同时你可以通过设置textOn和textOff配合trumb的矢量背景中width的设置来调节容纳多少个文字。还有一个非常好用的属性thumbTextPadding。这个属性也可以调节容纳多少文字,如下图所示:
图5 无thumbTextPadding vs 有thumbTextPadding
结论
对于Switch的基础使用就介绍到这里了,希望对格外有所帮助。请务必要了解清楚Switch控件的组成部分,这样你才能对症下药。对于Switch的个性化定制可能稍微要费点功夫,但是效果可能会让你有所惊喜。