无法正确对齐UI项目

时间:2013-11-14 12:34:56

标签: java android user-interface android-linearlayout relativelayout

请查看以下XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff" >

    <TextView
        android:id="@+id/save_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="22dp"
        android:text="@string/save_to" />

    <LinearLayout
        android:id="@+id/save_location_radio_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_toRightOf="@+id/save_txt"
        android:layout_marginTop="22dp"
        android:layout_marginLeft="5dp"
        android:layout_alignBaseline="@+id/save_txt">

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


    <RadioButton
        android:id="@+id/radio_sd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="SD" />

    <RadioButton
        android:id="@+id/radio_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Phone" />
    </RadioGroup>
    </LinearLayout>





    <TextView
        android:id="@+id/save_name_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_marginTop="50dp"
        android:text="@string/save_name" />

    <EditText
        android:id="@+id/save_name_edt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_toRightOf="@+id/save_name_txt"
        android:layout_alignBaseline="@+id/save_name_txt"
        android:layout_marginLeft="15dp"
        android:paddingBottom="10dp"
        android:ems="8" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/save_voice_note_button"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_toRightOf="@+id/save_name_edt"
        android:layout_alignBaseline="@+id/save_name_edt"
        android:layout_marginLeft="5dp"
        android:paddingBottom="10dp"
        android:text="@string/save" />

</RelativeLayout>

这会生成以下内容

enter image description here

有两个问题。

  1. 如您所见,RadioButton未与“保存到”TextView
  2. 右侧对齐
  3. 这实际上是Dialog,当我打开此窗口时,窗口的高度不够。请参阅图片,它仅显示EditTextButton的90%。
  4. 我尽力纠正这个但仍然没有好处。我做错了什么?

4 个答案:

答案 0 :(得分:1)

要解决对话框高度问题,请将主RelativeLayout的android:layout_height更改为wrap_content

要将单选按钮与TextView对齐,请将@+id/save_txt@+id/save_location_radio_layout更改为:

<TextView
    android:id="@+id/save_txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/save_to" 
    android:gravity="center_vertical"
    android:layout_alignTop="@+id/save_location_radio_layout"
    android:layout_alignBottom="@+id/save_location_radio_layout"/>

<LinearLayout
    android:id="@+id/save_location_radio_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:layout_toRightOf="@+id/save_txt"
    android:layout_marginTop="22dp"
    android:layout_marginLeft="5dp">

答案 1 :(得分:0)

将“保存到:”文本视图也置于第一个线性布局中,并在textview和radio组之间进行填充..

答案 2 :(得分:0)

try this out

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="22dp"
        android:id="@+id/headertop"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/save_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="save_to" />

        <LinearLayout
            android:id="@+id/save_location_radio_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"

            android:layout_toRightOf="@+id/save_txt"
            android:orientation="vertical" >

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

                <RadioButton
                    android:id="@+id/radio_sd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="SD" />

                <RadioButton
                    android:id="@+id/radio_phone"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Phone" />
            </RadioGroup>
        </LinearLayout>
    </LinearLayout>

    <TextView
        android:id="@+id/save_name_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/headertop"
        android:layout_marginTop="50dp"
        android:text="save_name" />

    <EditText
        android:id="@+id/save_name_edt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/save_name_txt"
        android:layout_below="@+id/headertop"
        android:layout_marginLeft="15dp"
        android:layout_toRightOf="@+id/save_name_txt"
        android:ems="8"
        android:paddingBottom="10dp" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/save_voice_note_button"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/save_name_edt"
        android:layout_below="@+id/headertop"
        android:layout_marginLeft="5dp"
        android:layout_toRightOf="@+id/save_name_edt"
        android:paddingBottom="10dp"
        android:text="save" />

</RelativeLayout>

答案 3 :(得分:0)

除上述评论外。

您不能确定所有元素都适合对话,因为它的大小取决于屏幕尺寸。您应该优化UI以适应大多数屏幕并将ScrollView包装在RelativeLayout周围。它将是新的根元素。