AlertDialog中的单选按钮问题

时间:2013-09-16 20:19:21

标签: android radio-button alertdialog android-alertdialog

我在一个ViewDialog中设置了两个RadioButtons。虽然第一个文本的文本显示为水平,但第二个按钮的文本显示为垂直。最初,我认为这是由于View没有填充对话框本身的宽度,但这似乎不是问题(我尝试使文本更小,我得到相同的结果)。我相信我过去曾遇到过这种情况,但我不记得我是如何解决它的。我在AlertDialog的应用程序中的其他地方使用RadioButtons没有问题,所以我很难过。这就是它的样子。在任何时候我都不会硬编码dp中任何布局或项目的宽度;我只使用match_parent或wrap_content:

View as it appears in the 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。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

android:id="@+id/radio_button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

没有足够的可用空间让第二个单选按钮适合其文本,因此它会拉伸高度以适应文本。