0

AlertDialog 内で設定された View 内に 2 つの RadioButtons があります。最初のボタンのテキストは横に表示されますが、2 番目のボタンのテキストは縦に表示されます。最初は、これは View がダイアログ自体の幅を埋めていないことが原因だと思っていましたが、それは問題ではないようです (テキストを小さくしてみましたが、同じ結果が得られました)。過去にこれに遭遇したことは確かですが、どのように解決したか思い出せません。私は問題なく AlertDialog 内のアプリの他の場所で RadioButtons を使用しているので、かなり困惑しています。これは、それがどのように見えるかです。レイアウトや項目の幅を dp にハードコードすることは決してありません。私はこれまで match_parent または wrap_content のみを使用しています。

AlertDialog に表示されるとおりに表示する

したがって、これを解決するための助けをいただければ幸いです。

私のレイアウト(LayoutInflatorが呼び出され、値/リスナーが適用されます):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/template"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="0dp"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/check_box"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.45"
            android:textSize="16sp"
            android:textColor="@color/Black" />

        <RadioGroup
            android:id="@+id/radio_group"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.55"
            android:orientation="horizontal"
            android:enabled="False">
            <RadioButton 
                    android:id="@+id/radio_button_1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:textDirection="ltr"
                    android:enabled="False"
                    android:textColor="@color/Black"/>
             <RadioButton 
                    android:id="@+id/radio_button_2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:enabled="False"
                    android:textColor="@color/Black"
                    android:checked="true"/>
        </RadioGroup>
</LinearLayout>

このようにレイアウトを膨らませると問題なく動作し、目的の出力が得られます。

LinearLayout inflatedLayout = (LinearLayout) this.getLayoutInflater().inflate(R.layout.template, null);
currDialog = CreateDialog.getDialog(this, "Title", inflatedLayout );
currDialog.show();

ただし、これを TableRow オブジェクトに追加し、それを TableLayout オブジェクトに追加すると、予期しない結果が生じます。最初に RelativeLayout を試してみます。

4

2 に答える 2

0

レイアウトの重みを使用しており、RadioGroup がスペースの 55% しか占有しないように強制しています。スペースが足りないので、テキストが縦になります。ラジオグループが収まることを 100% 確実にするには、幅を に設定する必要がありますwrap_content

<RadioGroup
        android:id="@+id/radio_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:enabled="False">

方向を に変更することも検討してくださいvertical。その場合、スペースの 55% しか収まらない可能性がありますが、それでも強くお勧めします。wrap_content

于 2013-09-16T20:23:31.767 に答える