我有20个按钮作为数组,我也将它显示在屏幕上,但现在我想限制用户一次只点击一个按钮,所以无论如何都要这样做吗?< / p>
注意:我知道我可以使用RadioButtons,但我需要有Buttons数组,因为我的应用程序有点像Calendar View(考虑使用Calendar View,我们可以使用Button显示“Day”值,然后输入day值如1,2,3,4 ...... ...... 31),现在用户可以一次只选择日期,同样,我希望一次只能点击一个按钮。
请理解我的要求。
答案 0 :(得分:4)
你一直在回答说单选按钮不是一个选项,但实际情况是,你所要求的正是RadioGroup of Radio Buttons的设计目的。
你可以用一个按钮数组来完成它,我可以解释你是怎么做的,但实际上我会向你解释如何写一个毫无意义的RadioGroup类。
如果'要求'(您尚未解释)不希望用于RadioButtons的默认小圆圈,那么使用自定义图形派生您自己的RadioButton子类,该图形看起来与普通Button完全相同,然后创建一个RadioGroup来处理其他一切。
答案 1 :(得分:3)
使用单选按钮,您所描述的是RadioButton存在的目的。
答案 2 :(得分:2)
答案 3 :(得分:1)
正如我的一些评论所指出的,您可以使用ToggleButton而不是Button类。
即
List<ToggleButton> buttonList = new List<ToggleButton>();
// Add your buttons here
buttonList.add(btn1);
buttonList.add(btn2); // etc
CompoundButton.OnCheckedChangeListener toggleListener = new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
foreach(ToggleButton button : buttonList) {
if(button==buttonView) {
// That's the button which got clicked, enable the toggle
button.setChecked(isChecked);
} else {
// That's all the other not-clicked on buttons, disable their toggle
button.setChecked(false);
}
}
}
}
foreach(ToggleButton button : buttonList) {
// Now set the Listener from above to each of the buttons
button.setOnCheckedChangeListener(toggleListener);
}
这应该可以解决问题,在这里无法检查编译器/语法错误,因为我在工作:P
修改强> 只是忘了添加用于将新创建的Listener设置为所有按钮的代码
答案 4 :(得分:0)
我不熟悉android,我担心,但这里的关键字是“radio” - 你应该尝试给这组按钮radio
属性。