Android 开发之CheckBox
本文采用SDK版本 Android 4.2.2
CheckBox就是我们平常上网看到的复选框,即多选控件,比如:我们注册用户的时候经常可以看到,也是Android中经常用到的。
关于CheckBox有2个重要事件;
- OnClickListener CheckBox点击是触发
- OnCheckedChangeListener 改变CheckBox选择状态是触发
首先,我们来看下第一个事件,具体代码如下:
布局文件:activity_main.xml
<RelativeLayout 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/cbox1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="玩游戏"
/>
<CheckBox
android:id="@+id/cbox2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/cbox1"
android:text="睡觉"
/>
<CheckBox
android:id="@+id/cbox3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/cbox2"
android:text="吃饭"
/>
</RelativeLayout>
java文件
package com.zhoucj.messagedemo;
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;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
CheckBox cbox1;
CheckBox cbox2;
CheckBox cbox3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cbox1=(CheckBox)findViewById(R.id.cbox1);
cbox2=(CheckBox)findViewById(R.id.cbox2);
cbox3=(CheckBox)findViewById(R.id.cbox3);
cbox1.setOnClickListener(new cbox());
cbox2.setOnClickListener(new cbox());
cbox3.setOnClickListener(new cbox());
}
class cbox implements OnClickListener
{
@Override
public void onClick(View v) {
if(v.getId()==R.id.cbox1)
{
showToast("您选择了玩游戏");
}else if(v.getId()==R.id.cbox2)
{
showToast("您选择了睡觉");
}else if(v.getId()==R.id.cbox3)
{
showToast("您选择了吃饭");
}
}
}
public void showToast(String msg)
{
Toast.makeText(this, msg, 2000).show();
}
@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;
}
}
运行结果:

可以看出,OnClickListener 不管你选没选中,都会触发。也就是说,只要当用户点击了,就触发了该事情。
下面我们来看看OnCheckedChangeListener 这个事情使用方法。
布局文件和上面的是一样的,这里只把java代码贴出来。
package com.zhoucj.messagedemo;
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;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
CheckBox cbox1;
CheckBox cbox2;
CheckBox cbox3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cbox1=(CheckBox)findViewById(R.id.cbox1);
cbox2=(CheckBox)findViewById(R.id.cbox2);
cbox3=(CheckBox)findViewById(R.id.cbox3);
cbox1.setOnCheckedChangeListener(new cbox());
cbox2.setOnCheckedChangeListener(new cbox());
cbox3.setOnCheckedChangeListener(new cbox());
}
class cbox implements OnCheckedChangeListener
{
//buttonView:被选中 那个CheckBox对象,既你选择了那个CheckBox返回那个该控件的对象
//isChecked:返回该CheckBox是否选中
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) //isChecked 只有当CheckBox选中是才执行
{
CheckBox ck=(CheckBox)buttonView;
showToast(ck.getText().toString());
}
}
}
public void showToast(String msg)
{
Toast.makeText(this, msg, 2000).show();
}
@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;
}
}
运行结果如下:

CheckBox是常见的控件也是常用的控件之一,掌握是有必要的。
好了,今天就说到这里了。
作者:zhoucj
原创作品

浙公网安备 33010602011771号