Android ToggleButton 开关按钮
Android ToggleButton (开关按钮) 允许我们在两个状态之间切换,有点类似于电灯的开关
ToggleButton
ToggleButton
和 CheckBox
一样都继承自 CompoundButton
,所以都有 Button
的属性和方法,又有 CompoundButton
的属性 android:checked
不过,ToggleButton
既然叫开关按钮,那么就一定有属性来设置 开状态 和 关状态 的文本
属性 | 说明 |
---|---|
android:disabledAlpha | 当 ToggleButton 处于 禁用 时的透明度 |
android:textOff | 当 ToggleButton 处于 关 时的文本 |
android:textOn | 当 ToggleButton 处于 开 时的文本 |
我们写一个简单的 demo 来演示下 ToggleButton
-
创建一个 空的 Android 项目
cn.twle.android.ToggleButton
-
修改
activity_main.xml
添加几个ToggleButton
<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" android:orientation="horizontal" > <ToggleButton android:id="@+id/power" android:text="Power" android:textOn="开灯" android:textOff="关灯" android:checked="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ToggleButton android:id="@+id/power2" android:text="Power" android:textOn="开灯" android:textOff="关灯" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
运行范例,显示如下
改变 ToggleButton
的状态和文本
ToggleButton
提供了一些方法用来改变或获取自身的状态和开关时的文本
方法 | 说明 |
---|---|
getTextOff() | 获取 ToggleButton 关时显示的文本 |
getTextOn() | 获取 ToggleButton 开时显示的文本 |
setChecked(boolean checked) | 设置 ToggleButton 是否选中 |
setTextOff(CharSequence textOff) | 设置 ToggleButton 关时显示的文本 |
setTextOn(CharSequence textOn) | 设置 ToggleButton 开时显示的文本 |
toggle() | 改变 ToggleButton 的开关状态 |
事件 | 说明 |
---|---|
CompoundButton.OnCheckedChangeListener | 当 ToggleButton 的开关状态改变时触发 |
现在我们写一个 demo 来监听 ToggleButton
开关状态的改变
-
复用上面的 demo
-
修改
MainActivity.java
为ToggleButton
添加一个事件监听器OnCheckedChangeListener
package cn.twle.android.togglebutton; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.CompoundButton; import android.widget.ToggleButton; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{ private ToggleButton power; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); power = (ToggleButton) findViewById(R.id.power); power.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if(compoundButton.isChecked()) Toast.makeText(this,compoundButton.getText().toString(),Toast.LENGTH_SHORT).show(); } }