0

我在 AlertDialog 中设置的视图中有两个 RadioButtons。虽然第一个按钮的文本显示为水平,但第二个按钮的文本显示为垂直。最初,我认为这是由于视图没有填充对话框本身的宽度,但这似乎不是问题(我尝试使文本更小并且得到相同的结果)。我确定我过去曾遇到过这种情况,但我不记得我是如何解决的。我在 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
android:id="@+id/radio_button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

第二个 RadioButton 没有足够的可用空间来适应它的文本,因此它会拉伸高度以适应文本。

于 2013-09-16T20:25:29.197 回答
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 回答