现在的位置: 首页 > 综合 > 正文

Android入门之多选按钮(CheckBox)

2013年02月08日 ⁄ 综合 ⁄ 共 5449字 ⁄ 字号 评论关闭

效果图:

代码如下:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
	<CheckBox 
	    android:id="@+id/eatid"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="吃饭"
	    />
    <CheckBox 
	    android:id="@+id/sleepid"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="睡觉"
	    />
	<CheckBox 
	    android:id="@+id/dotaid"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="dota"
	    />
</LinearLayout>

有2种方法;

第一种是OnClickListener的使用方法:

代码如下:

MainActivity.java

package com.jk.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
public class MainActivity extends Activity {
	private CheckBox eatBox;
	private CheckBox sleepBox;
	private CheckBox dotaBox;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		eatBox=(CheckBox)findViewById(R.id.eatid);
		sleepBox=(CheckBox)findViewById(R.id.sleepid);
		dotaBox=(CheckBox)findViewById(R.id.dotaid);
		onBoxClickListener listener =new onBoxClickListener();
		eatBox.setOnClickListener(listener);
		sleepBox.setOnClickListener(listener);
		dotaBox.setOnClickListener(listener);
	}
	class onBoxClickListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			CheckBox box = (CheckBox)v;
			if(box.getId()==R.id.eatid)
				System.out.println("eatBox");
			else if(box.getId()==R.id.sleepid)
				System.out.println("sleepBox");
			else if(box.getId()==R.id.dotaid)
				System.out.println("dotaBox");
			if(box.isChecked())
				System.out.println("is checked!");
			else
				System.out.println("is unchecked!");
		}		
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

第二种是OnCheckedChangeListener的使用方法:

package com.jk.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class MainActivity extends Activity {
	private CheckBox eatBox;
	private CheckBox sleepBox;
	private CheckBox dotaBox;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		eatBox=(CheckBox)findViewById(R.id.eatid);
		sleepBox=(CheckBox)findViewById(R.id.sleepid);
		dotaBox=(CheckBox)findViewById(R.id.dotaid);
		CheckBoxListener listener =new CheckBoxListener();
		eatBox.setOnCheckedChangeListener(listener);
		sleepBox.setOnCheckedChangeListener(listener);
		dotaBox.setOnCheckedChangeListener(listener);
	}
	class CheckBoxListener implements OnCheckedChangeListener{
		public void onCheckedChanged(CompoundButton v, boolean isChecked) {
			// TODO Auto-generated method stub
			CompoundButton box = (CompoundButton)v;
			if(box.getId()==R.id.eatid)
				System.out.println("eatBox");
			else if(box.getId()==R.id.sleepid)
				System.out.println("sleepBox");
			else if(box.getId()==R.id.dotaid)
				System.out.println("dotaBox");
			if(isChecked)
				System.out.println("is checked!");
			else
				System.out.println("is unchecked!");
		}		
	}
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

另外下面是实现全选的功能:

package com.jk.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MainActivity extends Activity {
	private CheckBox eatBox;
	private CheckBox sleepBox;
	private CheckBox dotaBox;
	private CheckBox allClickBox;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		eatBox = (CheckBox) findViewById(R.id.eatid);
		sleepBox = (CheckBox) findViewById(R.id.sleepid);
		dotaBox = (CheckBox) findViewById(R.id.dotaid);
		allClickBox = (CheckBox) findViewById(R.id.allClickid);
		CheckBoxListener listener = new CheckBoxListener();
		eatBox.setOnCheckedChangeListener(listener);
		sleepBox.setOnCheckedChangeListener(listener);
		dotaBox.setOnCheckedChangeListener(listener);
		allClickBox.setOnCheckedChangeListener(listener);
	}
	class CheckBoxListener implements OnCheckedChangeListener {
		public void onCheckedChanged(CompoundButton v, boolean isChecked) {
			CompoundButton box = (CompoundButton) v;
			if (box.getId() == R.id.eatid) {
				if (isChecked)
					System.out.println("eatBox is checked!");
				else
					System.out.println("eatBox is unchecked!");
			} 
			else if (box.getId() == R.id.eatid) {
				if (isChecked)
					System.out.println("sleepBox is checked!");
				else
					System.out.println("sleepBox is unchecked!");
			} 
			else if (box.getId() == R.id.eatid) {
				if (isChecked)
					System.out.println("dotaBox is checked!");
				else
					System.out.println("dotaBox is unchecked!");
			} 
			else if (box.getId() == R.id.allClickid) {
				if (isChecked) {
					eatBox.setChecked(true);
					sleepBox.setChecked(true);
					dotaBox.setChecked(true);
				} 
				else {
					eatBox.setChecked(false);
					sleepBox.setChecked(false);
					dotaBox.setChecked(false);
				}
			}
		}
	}
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

抱歉!评论已关闭.