ToggleButton(开关按钮)是Android系统中比较简单的一个组件,是一个具有选中和未选择状态双状态的按钮,而且在按中时候跟未按中的时候分别可以显示不同的文本。ToggleButton也是由Button派生而来。ToggleButton常用于切换程序中的某种状态。比如说我们系统里面的网络设置,有开启和关闭3G网络等设置就是使用ToggleButton。下面我们就通过一个例子来演示ToggleButton的使用。在我们的这个例子中,有三个ToggleButton分别代表3G网络,蜂窝数据,WIFI的开启或是关闭状态,然后还有一个按钮,当我们点击这个按钮后会显示所有ToggleButton的状态。运行效果如下;

ToggleButton
ToggleButton

下面是程序代码,

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_3g"
            android:text="启用3G"
            android:layout_margin="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
         <ToggleButton
             android:id="@+id/toggleButton_3g"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="10dp"
             android:layout_alignParentRight="true"
             android:layout_alignBaseline="@id/tv_3g"
             android:textOff="关"     
             android:textOn="开" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_2g"
            android:text="蜂窝数据"
            android:layout_margin="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
         <ToggleButton
             android:id="@+id/toggleButton_2g"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="10dp"
             android:layout_alignParentRight="true"
             android:layout_alignBaseline="@id/tv_2g"
             android:textOff="关"
             android:textOn="开" />
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_wifi"
            android:text="WIFI"
            android:layout_margin="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
         <ToggleButton
             android:id="@+id/toggleButton_wifi"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="10dp"
             android:layout_alignParentRight="true"
             android:layout_alignBaseline="@id/tv_wifi"
             android:textOff="关"
             android:textOn="开" />
    </RelativeLayout>
    <Button
        android:id="@+id/btn"
        android:text="确定"
        android:layout_marginTop="10dp"
        android:layout_width="100dp"
        android:layout_gravity="center"
        android:layout_height="wrap_content"/>
</LinearLayout>

ToggleButtonDemoActivity.java

package com.liuzhichao.ToggleButton;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
import android.widget.ToggleButton;

public class ToggleButtonDemoActivity extends Activity {

	private ToggleButton tb_3G;
	private ToggleButton tb_2G;
	private ToggleButton tb_WIFI;
	private Button btn;
	private Context context;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        context = this;

        tb_3G = (ToggleButton)findViewById(R.id.toggleButton_3g);
        tb_2G = (ToggleButton)findViewById(R.id.toggleButton_2g);
        tb_WIFI = (ToggleButton)findViewById(R.id.toggleButton_wifi);
        btn  = (Button)findViewById(R.id.btn);

        tb_2G.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if (isChecked) {
					Toast.makeText(context, "已开启蜂窝数据", 1).show();
				}
			}
		});

        tb_3G.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if (isChecked) {
					Toast.makeText(context, "已开启3G网络", 1).show();
				}
			}
		});

        tb_WIFI.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				if (isChecked) {
					Toast.makeText(context, "已开启WIFI", 1).show();
				}
			}
		});

        btn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				  StringBuffer result = new StringBuffer();
				   result.append("3G网络 : ").append(tb_3G.getText());
				   result.append("\n蜂窝数据 : ").append(tb_2G.getText());
				   result.append("\nWIFI : ").append(tb_WIFI.getText());
				   Toast.makeText(context, result.toString(),
							Toast.LENGTH_SHORT).show();
			}
		});
    }
}