复选框和单选按钮

时间:2011-08-02 10:49:50

标签: android-xml

复选框是否具有像单选按钮一样的权限。我正在开发一个测验应用程序,其中选项中有单选按钮的行为,选项的图标就像复选框一样,我是否可以分组我们将单选按钮分组的复选框?

3 个答案:

答案 0 :(得分:22)

如果您想要看起来像复选框的单选按钮。将RadioButton的样式设置为@android:style/Widget.CompoundButton.CheckBox

e.g:

<RadioButton style="@android:style/Widget.CompoundButton.CheckBox" />

答案 1 :(得分:2)

我不知道这是否是最佳解决方案,但您可以为您的复选框创建“经理”,并在每次点击时运行它。

为简单起见,我在xml代码中添加了管理器,但也可以随意使用 setOnClickListener setOnCheckedChangeListener

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox1" 
    android:onClick="cbgroupmanager"
    />

  ...

<CheckBox
    android:id="@+id/checkBox5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox5" 
    android:onClick="cbgroupmanager"/>

</LinearLayout>

您需要一个ArrayList来迭代,这样您就可以在每个复选框被点击时解决它们的状态。

   public class Q6910875 extends Activity 

    ArrayList<CheckBox> cb = new ArrayList<CheckBox>();         
    int CheckBoxNum = 5; //number of checkboxes
    Iterator<CheckBox> itr ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        cb.add((CheckBox) findViewById(R.id.checkBox1));
        cb.add((CheckBox) findViewById(R.id.checkBox2));
        cb.add((CheckBox) findViewById(R.id.checkBox3));
        cb.add((CheckBox) findViewById(R.id.checkBox4));
        cb.add((CheckBox) findViewById(R.id.checkBox5));
        itr = cb.iterator();

    }

在这里,我们有我们的经理,一个迭代器通过整个列表,取消检查所有内容,当它到达点击的那个,检查!

public void cbgroupmanager(View v) { 
    CheckBox cbaux;
    while(itr.hasNext()) {
        cbaux = (CheckBox) itr.next(); // we need this because it returns a Object, and we need the setChecked, which is a CheckBox method.
        Log.d("soa", "click");
        if (cbaux.equals(v))     //if its the one clicked, mark it as checked!
            cbaux.setChecked(true);
         else 
            cbaux.setChecked(false);

    }

我也可以找到下面链接的其他解决方案,你可以更改复选框的主题,但我没有任何主题经验,所以我无法帮助你进一步研究这种方法。

Is it possible to change the radio button icon in an android radio button group

答案 2 :(得分:-1)

在radiabutton,我们可以做出唯一的决定。但是 复选框,我们可以有多个选项。

根据用途我们选择这些控件。

例如,

单选按钮

性别 - 男性o女性

这里我们只能选择一个选项

例如,

复选框

你感兴趣的游戏?

o cricket o football o valleyball o hockey