2

我想在表格布局中将单选按钮排列在多行和多列中,控件使用下面的代码排列,但无法在同一个单选按钮组中关联。

你能帮忙吗,下面是我试过的代码..

<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <RadioGroup
            android:id="@+id/radioLang1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:dividerPadding="0dp"
            android:orientation="vertical" >

            <TableRow>

                <RadioButton
                    android:id="@+id/radioEnglish1"
                    android:layout_width="wrap_content"
                    android:layout_height="20dp"
                    android:checked="true"
                    android:onClick="onRadioButtonClicked"
                    android:text="@string/lang1"
                    android:textColor="@android:color/black"
                    android:textSize="12sp" />

                <RadioButton
                    android:id="@+id/radioTransliteration"
                    android:layout_width="wrap_content"
                    android:layout_height="20dp"
                    android:checked="true"
                    android:onClick="onRadioButtonClicked"
                    android:text="Punjabi Transliteration"
                    android:textColor="@android:color/black"
                    android:textSize="12sp" />
            </TableRow>

            <TableRow>

                <RadioButton
                    android:id="@+id/radioPunjabi1"
                    android:layout_width="wrap_content"
                    android:layout_height="20dp"
                    android:onClick="onRadioButtonClicked"
                    android:text="Punjabi Vyakhya(Meaning)"
                    android:textColor="@android:color/black"
                    android:textSize="12sp" />

                <RadioButton
                    android:id="@+id/radioHindi"
                    android:layout_width="wrap_content"
                    android:layout_height="20dp"
                    android:onClick="onRadioButtonClicked"
                    android:text="Hindi Mein Padhiye"
                    android:textColor="@android:color/black"
                    android:textSize="12sp" />
            </TableRow>

            <RadioButton
                android:id="@+id/radioEnglishTranslation1"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                android:onClick="onRadioButtonClicked"
                android:text="@string/eng_translate"
                android:textColor="@android:color/black"
                android:textSize="12sp" />
        </RadioGroup>
    </TableLayout>

谢谢

阿曼迪普

4

3 回答 3

1

我有同样的问题,但据我所知,不可能做你正在尝试的事情。

我搜索了一下,发现了一个可能的解决方法。

在另一个线程中,我发现了这个解释:

您的 RadioButton 小部件必须是 RadioGroup 的直接子级才能使组效果起作用。(来源在这里

另一种可能的方法是类似于 Table Layout Subclass 解决方案并为每个单选按钮实现单击侦听器,然后控制检查状态。(或者您可以为此创建一个管理器类,这并不难,IMO)。

另一种方法,如果你没有很多单选按钮,是做这样的事情(这不是一个很好的解决方案,但它有效,我得到了它,这很好)。在我的示例中,我必须使用 RadioButton,每一个都在 TableRow 中。我为 CheckedChanged 设置了相同的侦听器,当其中一个被选中时,我取消选中其他的(在这种情况下,它只是一个)。

OnCheckedChangeListener listener = new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (buttonView.getId()) {
                case R.id.radiobutton_int_value:
                    if (isChecked) {
                        mRadioPrefStrValue.setChecked(false);
                    }
                    break;
                case R.id.radiobutton_str_value:
                    if (isChecked) {
                        mRadioPrefIntValue.setChecked(false);

                    }
                    break;
                default:
                    break;
            }
        }
    };

    mRadioPrefIntValue.setOnCheckedChangeListener(listener);
    mRadioPrefStrValue.setOnCheckedChangeListener(listener);

或者,如果您有时间更改布局,请使用 RelativeLayout。不幸的是,我在完成整个布局后发现了这个问题。改变并不难,但对于我需要的,上面的“解决方法”有效,对于这个项目,可以这样走。

于 2014-07-03T00:03:52.797 回答
0

我在这里回答了您相同问题的更通用版本

要点是将单选按钮视为常规按钮并自己处理切换。它不像精心设计的单选按钮系统那样优雅,但我认为比制作自定义小部件更简单。我们必须用我们得到的东西工作。

class FooActivity {

    RadioButton m_one, m_two, m_three;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        m_one = (RadioButton) findViewById(R.id.first_radio_button);
        m_two = (RadioButton) findViewById(R.id.second_radio_button);
        m_three = (RadioButton) findViewById(R.id.third_radio_button);

        m_one.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                m_one.setChecked(true);
                m_two.setChecked(false);
                m_three.setChecked(false);
            }
        });

        m_two.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                m_one.setChecked(false);
                m_two.setChecked(true);
                m_three.setChecked(false);
            }
        });

        m_three.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                m_one.setChecked(false);
                m_two.setChecked(false);
                m_three.setChecked(true);
            }
        });

        ...     
    } // onCreate() 
}
于 2016-09-19T22:02:39.010 回答
0

创建一个 RadioGroup 类和 RadioButton 类,然后应用到您的 xml 将是 IMO 最简单的方法 ..

看到这个来源

于 2015-10-03T12:24:41.757 回答