Android ToggleButton

分享到:

ToggleButton控件非常简单只有两种状态:“选中” 和 “未选中” 通常用来表示一个开关状态的“开” 或 “关” ,常见的应用场景都在APP的设置界面,用来控制和表示某些功能是否已启用或关闭。

ToggleButton类结构如下:

java.lang.Object

	android.view.View

		android.widget.TextView

			android.widget.Button

				android.widget.CompoundButton

					android.widget.ToggleButton

ToggleButton常用XML属性:

android:disabledAlpha 设置按钮在禁用时透明度
android:textOff 未选中时按钮的文本
android:textOn 选中时按钮的文本

ToggleButton公共方法:

public CharSequence getTextOff ()

返回按钮未选中时的文本

public CharSequence getTextOn ()

返回按钮选中时的文本

public void setBackgroundDrawable (Drawable d)

设置指定的可绘制(译者注:如图片)为背景,或删除背景。如果让背景有边距,这个视图的边距就是背景的边距。然而,当背景被删除时,这个视图的边距不能被触摸。如果需要设置边距,请使用方法setPadding(int, int, int, int)。如果设置删除背景整个就不显示了,此外设置背景后选中和被选中的图片也会不显示

参数 d 设置可绘制(译者注:如图片)为背景,或设置为空删除背景

public void setChecked (boolean checked)

改变按钮的选中状态。
参数checked true让按钮选中,false让按钮不选中

public void setTextOff (CharSequence textOff)

设置按钮未选中时显示的文本。
参数 textOff    文本

public void setTextOn (CharSequence textOn)

设置按钮选中时显示的文本。
参数 textOn    文本

ToggleButton受保护方法:

protected void drawableStateChanged ()

在视图状态的变化影响到所显示可绘制的状态时调用这个方法。

确保在覆盖时中调用父类方法(super. drawableStateChanged ())。

protected void onFinishInflate ()

XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。

即使子类重写了onFinishInflate方法,也应该始终确保调用父类方法(译者注:super. onFinishInflate()),使系统能够调用。

实例:本例通过ToggleButton模拟开灯和关灯的效果,界面如下图所示:

先看XML布局文件内容:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ImageView android:id="@+id/imageView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/bulb_off" 
  android:layout_gravity="center_horizontal" />
  <ToggleButton android:id="@+id/toggleButton"
  android:layout_width="140dip"
  android:layout_height="wrap_content"
  android:textOn="开灯"
  android:textOff="关灯"
  android:layout_gravity="center_horizontal" />
  </LinearLayout>

XML中用到两张图片表示灯的开关效果(bulb_off 和 bulb_on),大家可自行用其它图片替换:

JAVA源码文件内容:

package com.ljq.tb;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ToggleButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class ToggleButtonActivity extends Activity {
  private ImageView imageView=null;
  private ToggleButton toggleButton=null;

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

  	imageView=(ImageView) findViewById(R.id.imageView);
  	toggleButton=(ToggleButton)findViewById(R.id.toggleButton);
  	toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener(){

  	public void onCheckedChanged(CompoundButton buttonView,
 		boolean isChecked) {
  		toggleButton.setChecked(isChecked);
  		imageView.setImageResource(isChecked?R.drawable.bulb_on:R.drawable.bulb_off);
  					}

  		});
  	}
  }

ToggleButton的基本用法就是这样的,是不是非常简单。

昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例