大家好,又见面了,我是你们的朋友全栈君。
简介
具有两个状态的按钮,已选中或未选中。当按下或点击按钮时,状态会自动更改。
- 直接继承至Button
- 直接子类
- CheckBox
- RadioButton
- Switch
- SwitchCompat
- ToggleButton
- 间接子类
- AppCompatCheckBox
- AppCompatRadioButton
使用
相比较Button而言多出了一个监听事件(接口)
CompoundButton.OnCheckedChangeListener
当复合按钮的检查状态发生变化时调用。
实现方法:onCheckedChanged( CompoundButton buttonView,boolean isChecked)
- buttonView 复合按钮视图的状态。
- isChecked buttonView的新状态。
公共方法
简单介绍几个常用的
- isChecked() — 获取当前状态
- performClick() — 调用此视图的OnClickListener(如果已定义)
- setChecked(boolean checked) — 更改这个按钮的状态
- setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener)
当这个按钮的检查状态发生变化时,注册一个回调 - toggle() — 将视图的状态更改为当前状态的逆(反向)
子类
CheckBox
复选框:可以选中或取消选中的特定类型的双状态按钮。
例:
<?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">
<CheckBox android:id="@+id/checkbox_meat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/meat" android:onClick="onCheckboxClicked"/>
<CheckBox android:id="@+id/checkbox_cheese" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cheese" android:onClick="onCheckboxClicked"/>
</LinearLayout>
public void onCheckboxClicked(View view) {
// Is the view now checked?
boolean checked = ((CheckBox) view).isChecked();
// Check which checkbox was clicked
switch(view.getId()) {
case R.id.checkbox_meat:
if (checked)
// Put some meat on the sandwich
else
// Remove the meat
break;
case R.id.checkbox_cheese:
if (checked)
// Cheese me
else
// I'm lactose intolerant
break;
// TODO: Veggie sandwich
}
}
public class MyActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_layout_id);
final CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
if (checkBox.isChecked()) {
checkBox.setChecked(false);
}
}
}
注:AppCompatCheckBox作为其子类用法差别不大!
RadioButton
单选按钮:是可以选中或取消选中的双状态按钮。当单选按钮被取消选中时,用户可以单击来选中它。
- 注:单选按钮通常与RadioGroup在一起使用。当多个单选按钮在RadioGroup内时,检查一个单选按钮将取消选中所有其他单选按钮。
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
<RadioButton android:id="@+id/radio_pirates" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pirates" android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/radio_ninjas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ninjas" android:onClick="onRadioButtonClicked"/>
</RadioGroup>
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radio_pirates:
if (checked)
// Pirates are the best
break;
case R.id.radio_ninjas:
if (checked)
// Ninjas rule
break;
}
}
注:AppCompatRadioButton作为其子类用法差别不大!
Switch
开关:是一个双状态切换开关小部件,可以在两个选项之间进行选择。用户可以来回拖动“拇指”来选择所选择的选项,或者只需轻按以切换,就像复选框一样。该text 属性控制交换机标签中显示的文本,而 文本off和on文本控制拇指上的文本。
xml属性 | 公共方法 | 作用效果 |
---|---|---|
android:showText | setShowText(boolean) | 是否显示 打开/关闭 文本 |
android:textOff | setTextOff(CharSequence) | 当开关处于 关闭 状态时使用的文本 |
android:textOn | setTextOn(CharSequence) | 当开关在 开打 状态时使用的文本 |
android:track | setTrackResource(int) | 开关拇指滑动的“轨迹” |
ToggleButton
显示 打开/关闭 的状态的按钮,默认情况下伴随文本“ON”或“OFF”。
与Switch差别不大!
知识不够用?
http://android.xsoftlab.net/reference/android/widget/CompoundButton.html
知识贵在分享!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133762.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...