android - RadioGroup 有两列有十个 RadioButtons

标签 android radio-button radio-group

我有一个 RadioGroup,我想在两列五行中将按钮彼此相邻对齐,但我无法实现。我尝试过的事情:

  1. RelativeLayout -> RadioGroup 外部 -> RadioGroup 内部。 所有 RadioButtons 都被选中,但我只想选中一个。
  2. RadioGroup:方向
  3. 跨度、拉伸(stretch)列
  4. 表格行
  5. 表格布局

请告诉我如何创建一个 RadioGroup 并在其中包含两列和许多 RadioButtons

最佳答案

您可以模拟该 RadioGroup 以使其看起来只有一个。例如,您有 rg1rg2(RadioGroups 方向设置为 vertical(两列))。要设置这些 RadioGroups:

rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
rg2 = (RadioGroup) findViewById(R.id.radioGroup2);
rg1.clearCheck(); // this is so we can start fresh, with no selection on both RadioGroups
rg2.clearCheck();
rg1.setOnCheckedChangeListener(listener1);
rg2.setOnCheckedChangeListener(listener2);

要在这些 RadioGroups 中仅选择一个 RadioButton,上面的监听器将是:

private OnCheckedChangeListener listener1 = new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                rg2.setOnCheckedChangeListener(null); // remove the listener before clearing so we don't throw that stackoverflow exception(like Vladimir Volodin pointed out)
                rg2.clearCheck(); // clear the second RadioGroup!
                rg2.setOnCheckedChangeListener(listener2); //reset the listener
                Log.e("XXX2", "do the work");
            }
        }
    };

    private OnCheckedChangeListener listener2 = new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                rg1.setOnCheckedChangeListener(null);
                rg1.clearCheck();
                rg1.setOnCheckedChangeListener(listener1);
                Log.e("XXX2", "do the work");
            }
        }
    };

要从 RadioGroups 中获取选中的 RadioButton,您可以这样做:

int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;

如果你使用 RadioGroupcheck() 方法,你必须记住在另一个 上调用 clearCheck() radio 组.

关于android - RadioGroup 有两列有十个 RadioButtons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425569/

相关文章:

android - SmsManager 的字符数限制是多少?

java - 如何使用canvas绘制运行时图以延迟在android中绘制背景

android - 错误: Please fix the version conflict

php - 如何使用单选按钮删除一行数据(PHP)

javascript - 通过单选设置文本字段

Extjs 4 RadioGroup 作为网格列内的小部件?

android - 检查 Recyclerview Adapter 中的单选按钮状态并从 MainActivity 对其应用更改

android - 使用 Rhomobile 开发智能手机应用程序

javascript - 将类添加到单选按钮

android - 以编程方式将单选按钮文本添加到按钮顶部