【Android开发】基本组件-复选框-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

【Android开发】基本组件-复选框

简介:
复选框:
默认情况下,单选框按钮显示为一个方块图标,并且在该图标旁边放置一些说明性文字。与单选按钮不同的是,复选框可以进行多选设置,每一个复选框都提供"选中"和"不选中"两种状态。
在Android中,复选框使用CheckBox表示,CheckBox又是Button的子类,所以单选按钮可以直接使用Button支持的各种属性。

Android中,可以使用两种方法向屏幕中添加单选按钮,一种是通过在XML布局文件中使用<CheckBox>标记添加;另一种是在Java文件中,通过new关键字创建。

推荐使用XML配置,基本语法如下:
<CheckBox
    android:text="显示文本"
    android:id="@+id/ID号"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</CheckBox>

实例:
界面:
res/layout/main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:orientation="horizontal"
	android:background="#FFFFFF">
	<TextView android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="爱好:"
	    android:width="100px"
	    android:height="50px"
	    android:gravity="right"/>
	<CheckBox
    	android:text="体育"
    	android:id="@+id/like1"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"/>
	<CheckBox
   	 	android:text="音乐"
    	android:id="@+id/like2"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"/>
	<CheckBox
    	android:text="美术"
    	android:id="@+id/like3"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"/>
	<Button android:text="提交"
	    android:id="@+id/button1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"/>
</LinearLayout>

界面如图:



在主活动中创建并实例化一个OnCheckedChangeListener对象,在实例化该对象时,重写onCheckedChanged()方法,当复选框被选中时,输出一条日志信息,显示被选中的复选框,具体代码如下:
private OnCheckedChangeListener checkBox_listener;
checkBox_listener=new OnCheckedChangeListener() {
			
	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		if(isChecked){
			Log.i("复选框", "选中了["+buttonView.getText().toString()+"]");
		}
				
	}
};

接下来点击提交按钮后,我们要获取复选框,并显示被选中的数据,完整代码如下:
package com.example.test;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;


public class MainActivity extends Activity {
	private OnCheckedChangeListener checkBox_listener;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		checkBox_listener=new OnCheckedChangeListener() {
			
	     @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
			if(isChecked){
		              Log.i("复选框", "选中了["+buttonView.getText().toString()+"]");
			}
				
		}
	};
		
		final CheckBox like1=(CheckBox)findViewById(R.id.like1);
		final CheckBox like2=(CheckBox)findViewById(R.id.like2);
		final CheckBox like3=(CheckBox)findViewById(R.id.like3);
		like1.setOnCheckedChangeListener(checkBox_listener);
		like2.setOnCheckedChangeListener(checkBox_listener);
		like3.setOnCheckedChangeListener(checkBox_listener);
		
		//为"提交"按钮添加单击事件监听器
		Button button=(Button)findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				String like="";//保存选中的值
				if(like1.isChecked()){
			            like+=like1.getText().toString()+"";//当第一个复选框被选中
				}
				if(like2.isChecked()){
			            like+=like2.getText().toString()+"";//当第二个复选框被选中
				}
				if(like3.isChecked()){
				    like+=like3.getText().toString()+"";//当第三个复选框被选中
				}
                                //显示被选中的复选框
			   Toast.makeText(MainActivity.this, like, Toast.LENGTH_SHORT).show();
			}
		});
	}
}

效果如图



转载请注明出处:http://blog.csdn.net/acmman/article/details/44776629

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: