Android控件篇06之 ToggleButton

本文介绍ToggleButton控件。下面的内容都是参考"ToggleButton测试代码"进行的讲解,感兴趣的可以进行测试验证。

1. ToggleButton基本使用

1.1 ToggleButton的父类

下面是ToggleButton的继承关系图

java.lang.Object
  ↳ android.view.View
    ↳ android.widget.TextView
      ↳ android.widget.Button
        ↳ android.widget.CompoundButton
          ↳ android.widget.ToggleButton

从中,可以看出Button和CompoundButton都是ToggleButton父类。这也就意味着,ToggleButton同时具有它们的特性。

1.2 ToggleButton基本定义

<ToggleButton 
    android:id="@+id/tb_simple"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOn="@string/on"
    android:textOff="@string/off"
    android:onClick="onToggleClicked"/>

下面是自定义背景图的ToggleButton。

<ToggleButton  
    android:id="@+id/tb_sync"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_toggle"
    android:textOn="@null"
    android:textOff="@null"
    android:disabledAlpha="1.5"
    android:gravity="center"
    android:onClick="onToggleClicked"
    />

1.3 ToggleButton事件的监听

ToggleButton事件的监听,有两种方法:

第一种:实现View.OnClickListener接口。这个和监听Button的方式一样,它监听的是点击动作!

第二种:实现CompoundButton.OnCheckedChangeListener接口。这个和第一种方法的区别是,它是监听状态(监听按钮状态的变化),而第一种方法是监听动作(监听按钮的点击事件)。

下面是两种方法的实现:

public class ToggleTest extends Activity {

    private TextView mView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mView = (TextView) findViewById(R.id.tv_intro);

        ToggleButton mSync = (ToggleButton) findViewById(R.id.tb_sync);
        mSync.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    mView.setText("checked!");
                } else {
                    mView.setText("un-checked!");
                }   
            }   
        }); 
    }   

    public void onToggleClicked(View view) {
        boolean checked = ((ToggleButton) view).isChecked();

        switch(view.getId()) {
            case R.id.tb_simple:
                Toast.makeText(this, "simple checked="+checked, Toast.LENGTH_SHORT).show();
                break;
            case R.id.tb_sync:
                Toast.makeText(this, "sync checked="+checked, Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }   
    }   
}
by skywang
Previous     Next