Android对话框高度

时间:2016-05-15 01:02:18

标签: android android-layout android-dialog

我正在尝试设置一个简单的对话框,但我似乎无法控制高度。它始终是最大屏幕高度。有没有办法让它正确包装到内容?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save"
        android:id="@+id/buttonSave"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:textAlignment="center"
        style="?attr/borderlessButtonStyle"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@android:string/cancel"
        android:id="@+id/buttonCancel"
        android:layout_alignParentBottom="true"
        android:layout_toStartOf="@+id/buttonSave"
        style="?attr/borderlessButtonStyle"/>

</RelativeLayout>

final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.save_dialog);
dialog.setTitle(R.string.saveAs);
dialog.show();

1 个答案:

答案 0 :(得分:3)

您的XML中有android:layout_alignParentBottom="true"。这会强制您Button位于其可用空间的最底部,从而有效地使RelativeLayout具有match_parent layout_height行为,而不是wrap_content 1}}一个。

另一种方法是使用LinearLayoutGridLayout代替。 根据这一点,可以解决这个问题:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <!-- 
    The rest of your layout can go here 
    with a layout_height of 0dp and a layout_weight of 1
    if you want your buttons to dock themselves at the bottom of the dialog
    -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@android:string/cancel"
            android:id="@+id/buttonCancel"
            style="?attr/borderlessButtonStyle"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/save"
            android:id="@+id/buttonSave"
            android:textAlignment="center"
            style="?attr/borderlessButtonStyle"/>
    </LinearLayout>
</LinearLayout>