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"
/>