zoukankan      html  css  js  c++  java
  • 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法

           单选按钮(RadioButton)和复选框(CheckBox)、状态开关按钮(ToggleButton)与开关(Switch)是用户界面中最普通的UI组件,他们都继承了Button类,因此都可直接使用Button支持的各种属性和方法。

           RadioButton、CheckBo与普通按钮不同的是,它们多了一个可选中的功能,因此RadioButon、CheckBox都可额外指定一个android:checked属性,该属性用于指定RadioButton、CheckBox初始时是否被选中。

          RadioButton与CheckBox的不同之处在于,一组RadioButton只能选中其中一个,因此RadioButton通常要与RadioGroup一起使用,用于定义一组单选按钮。

          实例:利用单选按钮、复选框按钮获取用户信息

          在需要获取用户信息的界面中,有些信息不需要用户直接输入,可以考虑让用户进行选择,比如用户的性别、爱好等。下面的界面布局文件定义一个让用户选择的输入界面。

        

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TableRow >
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别:"
            android:textSize="16dp"/>
        <!-- 定义一组单选按钮 -->
        <RadioGroup android:id="@+id/rg"
            android:orientation="horizontal"
            android:layout_gravity="center_horizontal">
            <!-- 定义两个单选按钮 -->
            <RadioButton android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/male"
                android:text="男"
                android:checked="true" />
            <RadioButton android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/female"
                android:text="女"/>
        </RadioGroup>
    </TableRow>
       <TableRow >
           <TextView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="喜欢的颜色:"
               android:textSize="16dp"/>
           <!-- 定义一个垂直的线性布局 -->
           <LinearLayout
               android:layout_gravity="center_horizontal"
               android:orientation="vertical"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content" >
               <!-- 定义三个复选框 -->
               <CheckBox android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="红色"
                   android:checked="true" />
               <CheckBox android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="蓝色"/>
               <CheckBox android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="绿色"/>
           </LinearLayout>
       </TableRow>
       <TextView android:id="@+id/show"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" />
    </TableLayout>

     上面的界面布局中定义了一组单选按钮,并默认勾选了第一个单选按钮,这组单选按钮供用户选择性别:还定义了三个复选框,供用户选择喜欢的颜色。

      注意:如果在XML布局文件中默认勾选了某个单选按钮,则必须为该组单选按钮的每个按钮指定android:id属性值,否则这组单选按钮不能正常工作。
     

       为了监听单选按钮、复选框勾选状态的改变,可以为它们添加事件监听器。例如下面Activity为RadioGroup添加了事件监听器,该监听器可以监听这组单选按钮的勾选状态的改变。

      

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.*;
    import android.widget.RadioGroup.*;
    
    public class RaidoButtonCheckBoxTest extends Activity {
        RadioGroup rg;
        TextView show;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.raido_button_check_box_test);
            //获取界面上rg、show两个组件
            rg=(RadioGroup)findViewById(R.id.rg);
            show=(TextView)findViewById(R.id.show);
            //为RadioGroup组件的OnCheck事件绑定事件监听器
            rg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // TODO Auto-generated method stub
                    //根据用户勾选的单选按钮来动态改变tip字符串的值
                    String tip=checkedId==R.id.male?"您的性别是男人":"您的性别是女人";
                      //修改show组件中的文本
                    show.setText(tip);
                }
                
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.raido_button_check_box_test, menu);
            return true;
        }
    
    }

    运行上面的程序,并改变第一组单选按钮的勾选状态,将看到如图2.25所示界面

     图2.25 单选按钮、复选框示意图

     

  • 相关阅读:
    Diffusion Particle Resolver
    GPU Jacobi Iterator
    Remark for ColorSpectrum Rendering
    关于Windows的命令行多语言输出
    DPR Sphere in Cloud
    看到一篇有意思的东西,记录一下
    GFS的系统架构
    jsp实现树状结构
    工作笔记
    批量删除
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3343443.html
Copyright © 2011-2022 走看看