CheckBox和Button一样,是一种古老的控件,它的优点在于,不用用户去填写具体的信息,只需轻轻点击。
CheckBox的应用范围也很广泛,比如常见的爱好选择。
简单的CheckBox的应用案例:
1.调用setOnCheckedChangeListener()方法,并把CompoundButton.OnCheckedChangeListener实例作为参数传入
2.在CompoundButton.OnCheckedChangeListener的onCheckedChanged()方法里,取得被选中Android复选框的实例
效果图:
页面布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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"
android:orientation="vertical"
tools:context="example.administrator.com.test1222application.MainActivity">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="同意"
android:id="@+id/tongyi"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"/>
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/Linear"
android:layout_height="wrap_content">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AA"
android:id="@+id/aa"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BB"
android:id="@+id/bb"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CC"
android:id="@+id/cc"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DD"
android:id="@+id/dd"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_sub"
android:text="提交"
/>
</LinearLayout>
java代码:
package example.administrator.com.test1222application;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private CheckBox ckOK;
private LinearLayout Linear;
private Button btn_sub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ckOK= (CheckBox) findViewById(R.id.tongyi);
Linear= (LinearLayout) findViewById(R.id.Linear);
btn_sub= (Button) findViewById(R.id.btn_sub);
ckOK.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
ckOK.setText("已同意");
/*ckOK.setEnabled(false);*/
}else{
ckOK.setText("同意");
}
}
});
btn_sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringBuffer sb=new StringBuffer();
//拿到所有的子类长度
int cNum = Linear.getChildCount();
for (int i = 0; i < cNum; i++) {
//根据i 拿到每一个CheckBox
CheckBox cb= (CheckBox) Linear.getChildAt(i);
//判断CheckBox是否被选中
if(cb.isChecked()){
//把被选中的文字添加到StringBuffer中
sb.append(cb.getText().toString());
}
}
Toast.makeText(MainActivity.this, sb.toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
当点击“同意”时,监听到选中事件,改变CheckBox的文本。
当选中一些CheckBox后,点击“提交”按钮,Toast出被选中按钮的所有文本
运行效果:
选中“同意”
点击“提交”
注意:
CheckBox有一个属性可以让他被选中后就不可以改变选项了
setEnabled(false)属性,当他为false时,CheckBox就不可以被改变了
运行效果: