按钮数组

时间:2010-11-26 09:03:15

标签: android

我有20个按钮作为数组,我也将它显示在屏幕上,但现在我想限制用户一次只点击一个按钮,所以无论如何都要这样做吗?< / p>

注意:我知道我可以使用RadioButtons,但我需要有Buttons数组,因为我的应用程序有点像Calendar View(考虑使用Calendar View,我们可以使用Button显示“Day”值,然后输入day值如1,2,3,4 ...... ...... 31),现在用户可以一次只选择日期,同样,我希望一次只能点击一个按钮。

请理解我的要求。

5 个答案:

答案 0 :(得分:4)

你一直在回答说单选按钮不是一个选项,但实际情况是,你所要求的正是RadioGroup of Radio Buttons的设计目的。

你可以用一个按钮数组来完成它,我可以解释你是怎么做的,但实际上我会向你解释如何写一个毫无意义的RadioGroup类。

如果'要求'(您尚未解释)不希望用于RadioButtons的默认小圆圈,那么使用自定义图形派生您自己的RadioButton子类,该图形看起来与普通Button完全相同,然后创建一个RadioGroup来处理其他一切。

答案 1 :(得分:3)

使用单选按钮,您所描述的是RadioButton存在的目的。

答案 2 :(得分:2)

你应该使用RadioGroup(很多RadioButtons)。

这是一个很好的例子: http://www.androidpeople.com/tag/radiogroup/

这是另一个教程:

Anddev

答案 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属性。