开关组件(Switch)

文章内容

 

 

1. Switch组件介绍

 

2. 使用Switch组件

 

3. 实例代码

 

 

 

1. Switch组件介绍

 

它是由API 14(Android 4.0, 4.0.1, 4.0.2)引入的新组建,是一种“组合按钮”,即继承了CompoundButton。就像CheckBox,RadioButton,  及ToggleButton一样, 它拥有两种状态分别表示“开启”和“关闭”。可以通过点击拖动来切换状态,默认情况下,每个状态上有一个用来显示当前状态的文本信息,比如,“ON”和“OFF”,不过也可以根据其控制的功能来自定义其显示文本。

 

默认设置下,Switch组件的样子如下:

 

            

               (开启)                                    (关闭)   

 

 

 

2. 使用Switch组件

 

使用该组件时,应该重点关注在其状态发生变化时我们应该作何反应。即,我们需要监听switch组件的状态的变化。很幸运,合理的需求和想像大都可以得到满足,switch的基类内部类CompoundButton.OnCheckedChangeListener帮了我们一个大忙。所以,我们的活动在使用switch时,可以实现CompoundButton.OnCheckedChangeListener接口,并实现其内部的onCheckedChanged方法。

 

除了关注Switch的状态变化外,我们可以做的更多,比如可以改变组件的外观。或许下面方法和属性可以实现这一点:

 

  • setSwitchTextAppearance(Context context, int resid) 使用指定的资源id设置状态标签上的文字大小,类型,颜色等;
  • setSwitchTypeface(Typeface tf, int style)  使用指定的字体类型库内的指定类型来设置状态标签上的文字;
  • setSwitchTypeface(Typeface tf) 使用指定字体类型库内的固有类型来设置状态标签上的文字;
  • setTextOff(CharSequence textOff) 设置“关闭”状态标签文字;
  • setTextOn(CharSequence textOn) 设置“开启”状体标签文字;
  • 父类内的setButtonDrawable(int resid) 用指定的资源id设置组件背景;
  • 父类内的setButtonDrawable(Drawable d) 用可绘制对象设置组件背景;
  • android:textStyle  和 android:typeface  与setSwitchTypeface( Typeface tf)对应;

 

 android:textStyle的值必须是下面中的一个,或是它们的组合(|):

 

normal 0
bold 1
italic 2

 

android:typeface的值必须是下面中的一个:

 

normal 0
sans 1
serif 2
monospace 3
 

 

 

3. 实例代码

 


3.1 布局文件R.layout.switches






    

        

        

        

        

        

        

        

        

        

        

    



3.2 Java代码:


public class Switches extends Activity implements CompoundButton.OnCheckedChangeListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.switches);
        
        Switch s = (Switch) findViewById(R.id.monitored_switch);
        if (s != null) {
            s.setOnCheckedChangeListener(this);
        }
    }
   
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
       Toast.makeText(this, "Monitored switch is " + (isChecked ? "on" : "off"),
               Toast.LENGTH_SHORT).show();
    }
}


3.3 运行结果:




最后需要注意的是,Switch控件的text属性(如:android:text="Standard switch")作为控件组成的一部分也会响应用户的交互。即,在text属性内容上点击时也会切换控件的状态。而要想通过拖动来改变控件状态时,则只能在控件本身上(不包括text属性内容)进行拖动。



                                                                                                                   2012年6月5日,毕




 

 

你可能感兴趣的:(Android--视图/布局)