我想创建一个包含RadioGroup
的自定义View
。在RadioGroup
内部,我想要设置RadioButtons
,以便第一个RadioButton
位于左上方,第二个位于下方,第一个位于右侧第三位,下方位于第四位。换句话说,我想创建一个组,其中的单选按钮排列在一个正方形中。我认为如果我将组的方向设置为垂直,那么所有的单选按钮都将处于一条直线上。另一方面,如果我将方向设置为水平方向,那么再次,这些单选按钮将全部位于一条直线上,并呈水平状态。有没有办法做我想做的事情,还是我被迫设置了两个单独的RadioGroups
,都是水平定位?以编程方式设置RadioGroup
回答
尝试处理RadioButtons
而不使用RadioGroup
。
接通个人RadioButtons
并将其保存在ArrayList<RadioButton>
中。
List<RadioButton> radioButtons = new ArrayList<RadioButton>();
radioButtons.add((RadioButton)findViewById(R.id.button1));
radioButtons.add((RadioButton)findViewById(R.id.button2));
radioButtons.add((RadioButton)findViewById(R.id.button3));
etc.
每个RadioButton
设置一个OnCheckedChangeListener
。
for (RadioButton button : radioButtons){
button.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) processRadioButtonClick(buttonView);
}
});
}
然后创建一个方法来取消选中未选中的RadioButtons
。
private void processRadioButtonClick(CompoundButton buttonView){
for (RadioButton button : radioButtons){
if (button != buttonView) button.setChecked(false);
}
}
使用这种方法,RadioButtons
可以位于XML布局的任何位置。
真棒回答马特,你能解释如何获得选定单选按钮的ID,我试过但我失败了。等待您的宝贵答案。谢谢。 – 2017-05-26 06:55:31
您应该从RadioGroup继承并覆盖onLayout()方法。
谢谢!你有没有一个例子,说明我想要做的重写会是什么样子? – LuxuryMode 2011-06-13 15:19:39
你可以想出如何从Roman Nurik的仪表板视图实现onLayout:https://gist.github.com/882650 – woodshy 2011-06-13 15:23:24
- 1. 以编程方式设置iPhone设置
- 2. 以编程方式配置IPhone设置
- 3. trigger.io以编程方式设置方向
- 4. 以编程方式设置Eclipse设置编辑器位置
- 5. 以编程方式设置php.ini值
- 6. 如何以编程方式设置masterpage?
- 7. 以编程方式设置LayoutParams
- 8. 以编程方式设置LayoutParams.BELOW
- 9. 以编程方式设置WPF属性
- 10. 以编程方式设置宽度Imageview
- 11. 以编程方式设置Wordpress语言?
- 12. android-以编程方式设置LayoutParams
- 13. 以编程方式设置分隔线
- 14. 以编程方式设置timepicker值
- 15. 以编程方式设置itemcommand事件
- 16. 以编程方式设置OnSelectedIndexChanged ddl
- 17. 以编程方式设置图层
- 18. 更改IE设置以编程方式
- 19. 以编程方式设置NSIndexPath
- 20. 以编程方式设置android:showAsAction =“ifRoom | withText”
- 21. 以编程方式定义设置
- 22. 以编程方式设置ListView的dataSource
- 23. 以编程方式设置IBInspectable
- 24. 以编程方式设置headerviews
- 25. 以编程方式设置AWS区域
- 26. 以编程方式删除Web.config设置
- 27. KineticJS以编程方式设置笔划
- 28. 如何以编程方式设置layout_margin?
- 29. ASP.NET MVC6:以编程方式设置webroot
- 30. 以编程方式设置复选框
您可以使用RelativeLayout而不是LinearLayout – Pratik 2011-06-13 14:53:52
@Pratik会有帮助吗?这将帮助我建立一个相对于别的东西的组,但是相对于彼此的按钮又如何呢? – LuxuryMode 2011-06-13 15:03:37