android设置checkbox
⑴ Android中的checkBOX在代码中怎么设置至少选中一个
CheckBox和Button一样,是android系统提供的最原始的控件,它的优点在于,不用用户去填写具体的信息,只需轻轻点击,缺点在于只有“是”和“否”两种情况,但我们往往利用它的这个特性,来获取用户的一些信息。
1.CheckBox的常用属性
checked属性是CheckBox最重要的属性之一,改变方式有两种,xml中定义
android:checked="true|false"
表示选中和不选中
2.在代码中设置选择状态
checkBox.setChecked(true|false);
3.获取CheckBox的状态
checkBox.isChecked();
true表示选中,false表示未选中
4.checkBox的应用
1.如果不确定某一组选项有几个的时候,例如多选之前删除,那么要使用listView
+
adapter
其中checkBox存放在listView的adapter中,代码实现比较复杂,需要自己去注册checkBox的事件
2.如果checkBox的选项是已经知的,例如兴趣爱好,已知有多少个选项的情况下,那么你只需要用个线性布局做为容器,将checkBox都放到这个容器中
3.获取选中的文本
如果是用listView的话,只需要自己在adapter中写一个方法,返回选中的数据即可得到文本,如果是其它容器做的话,只能去遍历这个布局下的所有checkBox
然后调用
if(checkBox.isChecked()){
checkBox.getText().toString();
//即可得到选中的文本
}
有关checkBox的更多用法,建议查看官网API文档
⑵ android 如何改变checkbox样式
1、首先res/drawable中定义编写如下样式:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/check_true" android:state_checked="true"></item>
<item android:drawable="@drawable/check_true" android:state_selected="true"></item>
<item android:drawable="@drawable/check_true" android:state_pressed="true"></item>
<item android:drawable="@drawable/check_false"></item>
</selector>
2、在layout中添加checkbox控件
<CheckBox
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_check"
android:button="@null"
android:checked="true"/>
其中drwable/btn_check为1中顶一个文件名称,另外必须将android:button设置为@null。
@drawable/check_true和@drawable/check_false为checkbox不同状态的图片,可自行设计。
⑶ 大家好跪求,用安卓实现一个复选框选中另一个复选框默认选中,代码怎么写呢
在你的选项中加入 android:checked="true" 这样的代码也就是默认选中
例如:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:"
android:width="50px"
android:height="30px" />
<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"
android:checked="true"/> //我在足球这里加了个默认选中
<CheckBox android:text="下棋"
android:id="@+id/like3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<CheckBox android:text="游泳"
android:id="@+id/like4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
⑷ android中的checkbox如何设置横向显示
这是设置方面的问题,LinearLayout有一个属性,是整个layout内View的排列方向的,
android:orientation="vertical",为竖向的,默认。
android:orientation="horizontal",才为横向的,
你需在Layout的xml配置上加上这句才可以的。
⑸ android中的checkBox如何实现单选
Android中checkbox默认为复选框,也就是多选,实现单选的话,可以让checkbox添加监听,当已经有一个点击了,点击另外一个的时候,修改默认的状态,实现单选,示例如下:
java">publicstaticinttemp=-1;
checkBox=(CheckBox)parentView.findViewById(R.id.cbox_isselect);
//做个标记
checkBox.setId(groupPosition);
//checkbox监听
checkBox.setOnCheckedChangeListener(newOnCheckedChangeListener(){
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
if(isChecked)
{
//这段代码来实现单选功能
if(temp!=-1)
{
CheckBoxtempButton=(CheckBox)MyRingBoxActivity.this.findViewById(temp);
if(tempButton!=null)
{
tempButton.setChecked(false);
}
}
//得到当前的position
temp=buttonView.getId();
}else{
temp=-1;
}
}
});
⑹ android怎么让listview的checkbox单选
还是先来看看是不是你想要的效果:
不废话,直接上代码,很简单,代码里都有注释
单选
public class SingleActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<String> groups;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single);
listView = (ListView) this.findViewById(R.id.lvGroup);
groups = new ArrayList<String>();
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
SingleAdapter.ViewHolder viewHolder = (SingleAdapter.ViewHolder) view.getTag();
viewHolder.cb.toggle();// 把CheckBox的选中状态改为当前状态的反,gridview确保是单一选中
}
};
SingleAdapter adapter = new SingleAdapter(this, groups);
listView.setAdapter(adapter);
listView.setOnItemClickListener(listItemClickListener);
}
}
Adapter:
public class SingleAdapter extends BaseAdapter {
private Activity activity;//上下文
private ArrayList<String> list;
private LayoutInflater inflater = null;//导入布局
private int temp = -1;
public SingleAdapter(Activity context, ArrayList<String> list) {
this.activity = context;
this.list = list;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//listview每显示一行数据,该函数就执行一次
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {//当第一次加载ListView控件时 convertView为空
convertView = inflater.inflate(R.layout.group_item_view, null);//所以当ListView控件没有滑动时都会执行这条语句
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);//为view设置标签
} else {//取出holder
holder = (ViewHolder) convertView.getTag();
}
//设置list的textview显示
holder.tv.setTextColor(Color.WHITE);
holder.tv.setText(list.get(position));
// 根据isSelected来设置checkbox的选中状况
holder.cb.setId(position);//对checkbox的id进行重新设置为当前的position
holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {//实现checkbox的单选功能,同样适用于radiobutton
if (temp != -1) {
//找到上次点击的checkbox,并把它设置为false,对重新选择时可以将以前的关掉
CheckBox tempCheckBox = (CheckBox) activity.findViewById(temp);
if (tempCheckBox != null)
tempCheckBox.setChecked(false);
}
temp = compoundButton.getId();//保存当前选中的checkbox的id值
}
}
});
if (position == temp)//比对position和当前的temp是否一致
holder.cb.setChecked(true);
else
holder.cb.setChecked(false);
return convertView;
}
public static class ViewHolder {
TextView tv;
CheckBox cb;
}
}
多选:
public class MulActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<String> groups;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mul);
listView = (ListView) this.findViewById(R.id.list);
groups = new ArrayList<>();
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag();
viewHolder.cb.toggle();// 把CheckBox的选中状态改为当前状态的反,gridview确保是单一选中
MulAdapter.getIsSelected().put(position, viewHolder.cb.isChecked());//将CheckBox的选中状况记录下来
}
};
MulAdapter adapter = new MulAdapter(this, groups);
listView.setAdapter(adapter);
listView.setOnItemClickListener(listItemClickListener);
}
}
Adapter:
public class MulAdapter extends BaseAdapter {
private Context context;//上下文
private ArrayList<String> list;
//控制CheckBox选中情况
private static HashMap<Integer, Boolean> isSelected;
private LayoutInflater inflater = null;//导入布局
public MulAdapter(Context context, ArrayList<String> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
isSelected = new HashMap<Integer, Boolean>();
initData();
}
private void initData() {//初始化isSelected的数据
for (int i = 0; i < list.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//listview每显示一行数据,该函数就执行一次
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {//当第一次加载ListView控件时 convertView为空
convertView = inflater.inflate(R.layout.group_item_view, null);//所以当ListView控件没有滑动时都会执行这条语句
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);//为view设置标签
} else {//取出holder
holder = (ViewHolder) convertView.getTag();//the Object stored in this view as a tag
}
//设置list的textview显示
holder.tv.setTextColor(Color.WHITE);
holder.tv.setText(list.get(position));
// 根据isSelected来设置checkbox的选中状况
holder.cb.setChecked(getIsSelected().get(position));
return convertView;
}
public static class ViewHolder {
TextView tv;
CheckBox cb;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
MulAdapter.isSelected = isSelected;
}
}
以上所述是给介绍的Android中ListView + CheckBox实现单选、多选效果
⑺ android中怎么改变checkbox状态
//获取CheckBox实例
CheckBoxcb=(CheckBox)this.findViewById(R.id.checkbox);
//设置Checkbox的状态,true为选中,false为不选中
cb.setChecked(true);
⑻ Android的ListView如何做到点击其中一项Item就同时把CheckBox设置为选中
1、设置checkbox为不可点击
2、用一个数组维护所有Item选中状态
3、当选中状态发生变化时更新数组
4、当选中状态发生变化时刷新列表
5、根据item的选中状态设置checkbox的选中状态
⑼ android怎么把checkbox状态设置为选中状态
android:checked="true"就是设置checkbox状态为选中状态。
⑽ android checkbox 怎么设置复选框的只读效果不让用户勾选
提到只读,很容易想到使用readonly属性,但是对于复选框来说,这个属性和期望得到的效果是有差别的。原因在于readonly属性关联的是页面元素的value属性(例如textbox,设置了readonly就不能修改输入框的文本内容),而复选框的勾选/取消并不改变其value属性,改变的只是一个checked状态。所以对于checkbox来说,设置了readonly,仍然是可以勾选/取消的。效果如下:
<input
type="text"
name="realname"
value="只读的文本内容..."
readonly="readonly"
/>
<input
type="checkbox"
name="optiona"
readonly="readonly"
/>option
a
<input
type="checkbox"
name="optionb"
readonly="readonly"
/>option
b
<input
type="checkbox"
name="optionc"
readonly="readonly"
/>option
c
option
a
option
b
option
c
和readonly类似的,还有一个disabled属性,这个属性的作用是设置页面元素为不可用,即不可进行任何交互操作(包括不可修改value属性、不可修改checked状态等)。效果如下:
<input
type="text"
name="realname"
value="输入的文本内容..."
disabled="disabled"
/>
<input
type="checkbox"
name="optiona"
disabled="disabled"
/>option
a
<input
type="checkbox"
name="optionb"
disabled="disabled"
/>option
b
<input
type="checkbox"
name="optionc"
disabled="disabled"
/>option
c
option
a
option
b
option
c
从上面我们可以看到,无论是readonly还是disabled,都没有实现我们期望的效果。既然直接实现不了,那么我们可以变通一下,模拟实现。代码如下:
<input
type="checkbox"
name="chkAllowed"
onclick="return
false;"
checked="checked"
/>