Android widget之CompoundButton[通俗易懂]

Android widget之CompoundButton[通俗易懂]ButtonCheckBoxRadioButtonSwitchSwitchCompatToggleButtonAppCompatCheckBoxAppCompatRadioButton

大家好,又见面了,我是你们的朋友全栈君。

简介

具有两个状态的按钮,已选中或未选中。当按下或点击按钮时,状态会自动更改。

  • 直接继承至Button
  • 直接子类
    1. CheckBox
    2. RadioButton
    3. Switch
    4. SwitchCompat
    5. ToggleButton
  • 间接子类
    1. AppCompatCheckBox
    2. 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账号...

(0)


相关推荐

  • 前端的葵花宝典 – 红宝书《JavaScript高级程序设计(第4版)》学习笔记[通俗易懂]

    前端的葵花宝典 – 红宝书《JavaScript高级程序设计(第4版)》学习笔记[通俗易懂]对于前端经典书籍《JavaScript高级程序设计》是慕名已久,几天前收到某社区消息推送,即入手了最新的第四版中文版纸质和电子书,希望能好好系统的学习一下这门技术,并将学习笔记记录于此。

  • 梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

    梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点1.梯度  在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y),分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x,∂f/∂y)T,简称gradf(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0,∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x,…

  • tomcat8安装及配置教程_vrrp配置实例

    tomcat8安装及配置教程_vrrp配置实例1.下载tomcat8,官网地址:http://tomcat.apache.org/根据自己电脑的系统,下载对应的版本zip,我下载的是window64位的zip包下一步:2.解压缩apache-tomcat-8.5.11-windows-x64.zip到D盘3.环境变量配置:(请先看文章结尾)3.1系统变量,新增 CATALINA_HOME,地址就是刚才文件夹,不需要带/bin3.2…

  • 学c++还是学java就业「建议收藏」

    学c++还是学java就业「建议收藏」Java更偏向业务型开发,比如银行的xx管理系统,安卓手机的软件以及WEB等等。java更容易入手,学会用框架基本就能来开发,开发效率(完成的速度)相对高,当前相对C++更好就业,薪资平均水平相比C++略高(参考2014年谷歌统计数据)。C++,难度相对高,入手较难深入也难,它涉及的内容很多,特性很多,可以做一些考虑性能(并发,速度)的东西,比如各种后台服务,游戏的后台部分,C++主要更服务器打交道,当然你要用上MFC,QT等也能做界面的东西。前途还是钱途:当前的话,可能Java性价比更高。不过游戏,

  • Redis的那些最常见面试问题

    Redis的那些最常见面试问题

  • spring中@transactional注解的作用(spring 事务实现原理)

    事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号