我在布局中添加了一个RadioButton。
一开始就没有检查。当我点击它时,它会被检查(如模拟器中所示)。但是,当我再次点击它时,它不会再次被取消选中?
<RadioButton android:checked="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option1"/>
答案 0 :(得分:9)
如果您正在寻找具有单选按钮外观的复选框行为,则可以将xml样式传递给复选框。
<CheckBox android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option1"
style="@android:style/Widget.DeviceDefault.Light.CompoundButton.RadioButton/>
这在某些情况下很有用(例如在RecyclerView中使用单选按钮),但是您应该小心,因为用户希望单选按钮以某种方式运行。如果您允许用户进行多项选择,您应该使用正常的复选框,如上面的评论中所述。
希望这有帮助!
答案 1 :(得分:5)
如果你只使用一个收音机盒来检查和关闭,也许你应该使用复选框或切换按钮。
http://developer.android.com/resources/tutorials/views/hello-formstuff.html
向下滚动并查看复选框和切换按钮。
使用无线电时,您通常会有多个无线电,并在它们之间进行选择。喜欢简单,中等,坚硬。
答案 2 :(得分:3)
如果您有多个单选按钮可供使用,请按如下方式添加“RadioGroups”:
<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical">
<RadioButton android:id="@+id/radio1" android:text="madras"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<RadioButton android:id="@+id/radio2" android:text="bombay"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RadioGroup>
看一下这个example ,我相信这会让你的想法明确 Radio Buttons 。
答案 3 :(得分:1)
这是一个概念性问题:单选按钮允许您在几个选项之间进行选择(由其他单选按钮表示)。通常,始终检查组中的一个单选按钮,即使在初始状态下,如果未将一个按钮声明为默认值,也不会检查按钮。这也意味着单个按钮不允许切换其状态,除非同一组中存在其他单选按钮 - 如果只有一个选项,则必须选择它。
如果您想要二进制切换,则需要使用复选框。
答案 4 :(得分:1)
在Java代码中设置检查[true / false]中间的解决方案
ToggleButton t = (ToggleButton) findViewById(R.id.toggle_button);
t.setChecked(true);
// t.setChecked(false);
答案 5 :(得分:1)
在搜索了很多东西之后,我想出了一个不那么好但很体面的解决方法。
为每个RadioButton声明一个boolean
变量,用false
初始化它,并在每次点击时更改变量和RadioButton的状态。
boolean isToggledRadio1 = false;
RadioButton radio1 = (RadioButton) findViewById(R.id.radiobutton1);
radio1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isToggledRadio1 = !isToggledRadio1; //Switch boolean value
RadioButton rb = (RadioButton)v;
rb.setChecked( isToggledRadio1 );
}
});
我知道使用Checkbox是理想的选择,但是如果有人需要radiobutton,那么他们需要使用单选按钮。
这不是最佳解决方案,因为每次用户点击按钮时基本上都会切换按钮两次(一种是默认行为,第二次是在你的onclick功能中),所以如果你使用OnCheckedChangeListener
,你可能会收到两次同一次点击的电话。
还有另一种解决方法,即使用xml模板将复选框中的android:button
更改为另一个drawable,但它有点复杂,需要至少2个以上各州的档案。