Android初学习 - 4.0以后支持的Switch按钮

在android4.0里面,添加了一个和这个类似的控件:Switch,很形象,开关。效果图如下:

             


其类关系图如下:

java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.Button
         ↳ android.widget.CompoundButton
           ↳ android.widget.Switch
父类:compoundButton。

类的概述:

    Switch是一个可以在两种状态切换的开关控件。用户可以拖动"thumb"来回选择,也可以像选择复选框一样点击切换Switch的状态。

主要方法:

Public Methods
int getCompoundPaddingRight()
Returns the right padding of the view, plus space for the right Drawable if any.
CharSequence getTextOff()
Returns the text displayed when the button is not in the checked state.
CharSequence getTextOn()
Returns the text displayed when the button is in the checked state.
void jumpDrawablesToCurrentState()
Call  Drawable.jumpToCurrentState() on all Drawable objects associated with this view.
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height.

void onPopulateAccessibilityEvent( AccessibilityEvent event)
giving a chance to this View to populate the accessibility event with its text content.
boolean onTouchEvent( MotionEvent ev)
Implement this method to handle touch screen motion events.
void setChecked(boolean checked)

Changes the checked state of this button.

void setSwitchTextAppearance( Context context, int resid)
Sets the switch text color, size, style, hint color, 
and highlight color from the specified TextAppearance resource.
void setSwitchTypeface( Typeface tf, int style)
Sets the typeface and style in which the text should be displayed on the switch, 
and turns on the fake bold and italic bits in the Paint if the Typeface 
that you provided does not have all the bits in the style that you specified.
void setSwitchTypeface( Typeface tf)
Sets the typeface in which the text should be displayed on the switch.
void setTextOff( CharSequence textOff)
Sets the text displayed when the button is not in the checked state.
void setTextOn( CharSequence textOn)
Sets the text displayed when the button is in the checked state.

在TextView中的源码:

[java]  view plain copy
  1.     public int getCompoundDrawablePadding() {  
  2.         final Drawables dr = mDrawables;  
  3.         return dr != null ? dr.mDrawablePadding : 0;  
  4.     }
jumpDrawableToCurrentState():在与Switch相关的Drawable操作时调用 Drawable.jumpToCurrentState()这个方法。

     getTextOff()、getTextOn()、 setTextOff()、setTextOn()这四个方法比较简单,就是设定和获取非选中和选中状态下的文本值。

     onMeasure():测量控件宽高,供绘图时使用。

     onTouchEvent(MotionEvent ev)实现这一方法传递触摸屏运动事件。

setChecked()设置Switch的状态(选中,非选中)

setSwitchTextAppearance()设置字体大小

setSwitchTextTypefaces设置字体格式

google官方在/frameworks/base/core/res/res/values/styles.xml的一个定义:

[java]  view plain copy
  1. <style name="Widget.Holo.CompoundButton.Switch">  
  2.         <item name="android:track">@android:drawable/switch_track_holo_dark</item>  
  3.         <item name="android:thumb">@android:drawable/switch_inner_holo_dark</item>  
  4.         <item name="android:switchTextAppearance">@android:style/TextAppearance.Holo.Widget.Switch</item>  
  5.         <item name="android:textOn">@android:string/capital_on</item>  
  6.         <item name="android:textOff">@android:string/capital_off</item>  
  7.         <item name="android:thumbTextPadding">12dip</item>  
  8.         <item name="android:switchMinWidth">96dip</item>  
  9.         <item name="android:switchPadding">16dip</item>  
  10. </style>

可以在main.xml中这样定义:

[java]  view plain copy
  1.     <Switch   
  2.         android:id="@+id/demo_switch"  
  3.         android:layout_width="wrap_content"  
  4.         android:layout_height="wrap_content"  
  5.         android:layout_below="@+id/textView"  
  6.         android:textOn="开"  
  7.         android:textOff="关"  
  8.         />

当Switch状态切换时:

[java]  view plain copy
  1.         mSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {  
  2.               
  3.             @Override  
  4.             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {  
  5.                 if(isChecked) {  
  6.                     //选中时 do some thing   
  7.                     statusText.setText("开");  
  8.                 } else {  
  9.                     //非选中时 do some thing   
  10.                     statusText.setText("关");  
  11.                 }  
  12.                   
  13.             }  
  14.         });

/

google官方在/frameworks/base/core/res/res/values/styles.xml的一个定义:

[java]  view plain copy
  1. <style name="Widget.Holo.CompoundButton.Switch">  
  2.         <item name="android:track">@android:drawable/switch_track_holo_dark</item>  
  3.         <item name="android:thumb">@android:drawable/switch_inner_holo_dark</item>  
  4.         <item name="android:switchTextAppearance">@android:style/TextAppearance.Holo.Widget.Switch</item>  
  5.         <item name="android:textOn">@android:string/capital_on</item>  
  6.         <item name="android:textOff">@android:string/capital_off</item>  
  7.         <item name="android:thumbTextPadding">12dip</item>  
  8.         <item name="android:switchMinWidth">96dip</item>  
  9.         <item name="android:switchPadding">16dip</item>  
  10. </style>
其中,switchMinWidth用于指定开关按钮的最小宽度,thumbTextPadding用于指定滑块打开时的大小,switchPadding用于指定收起滑块时的大小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值