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 の直接の子である必要があります。(ソースはこちら

もう 1 つの方法は、テーブル レイアウト サブクラス ソリューションに似たものを使用して、ラジオ ボタンごとにクリック リスタナーを実装し、チェック済みのステータスを制御することです。(または、このためのマネージャークラスを作成できます。それほど難しくありません、IMO)。

ラジオボタンがあまりない場合の別の方法は、次のようなことです(これはかなりの解決策ではありませんが、機能し、私にとってはうまくいきました)。私の例では、それぞれが TableRow にある RadioButton を使用する必要があります。CheckedChanged の両方に同じリスナーを設定し、そのうちの 1 つがチェックされたら、他のチェックを外します (この場合は 1 つだけです)。

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

RadioGroup クラスと RadioButton クラスを作成し、xml に適用するのが最も簡単な方法です。

このソースを参照してください

于 2015-10-03T12:24:41.757 に答える