2010-11-26 90 views
-9

我有一个20个按钮作为数组,我也显示在屏幕上,但现在我想限制用户一次只点击一个按钮,所以无论如何这样做??按钮阵列

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

请理解我的要求。

+0

你的问题并不是全部清楚。你不会*选择一个按钮,你*点击*它,然后发生一些事情。根据定义(忽略多点触摸),您一次只能单击一个按钮。如果你想要*选择一个“按钮”,你真正想要的是一个复选框或单选按钮(如下面几个答案所建议的)。如果这不是你想要的,请更好地澄清你的问题。 – Nailuj 2010-11-26 09:27:23

+0

@Nailuj我用“点击”修改了这个问题,好吧 – 2010-11-26 11:09:14

+0

大家都在关注RadioButtons,我也提到过我必须拥有按钮数组,但没有人确切得到。我的运气不好 – 2010-11-26 11:09:48

回答

4

你一直在回应,单选按​​钮不是一个选项,但实际情况是,你问的是RadioGroup的Radio Buttons设计的目的。

你可以用一个按钮数组来做到这一点,我可以解释你将如何做,但我会向你解释如何编写一个毫无意义的RadioGroup类。

如果'需求'(你没有解释)不需要用于RadioButtons的默认小圆圈,然后派生自己的RadioButton子类与自定义图形,看起来像一个正常的按钮,然后创建一个RadioGroup处理一切。

3

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

0

我不熟悉的Android,我很害怕,但这里的关键词是 “单选” - 您应该尝试给这组按钮radio属性。

1

正如我在一些评论中指出的那样,您可以使用ToggleButton而不是Button类。

I.e.

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

编辑: 刚才忘了添加代码设置新创建的听众所有的按钮