我正在我的应用中创建一个自定义对话框,它在布局编辑器中看起来很好,但设备上的尺寸不合适。这是对话框的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/dialog_border"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:padding="10dp"
android:src="@drawable/wifi" />
<TextView
android:layout_height="wrap_content"
android:id="@+id/heading"
android:layout_below="@+id/image"
android:layout_width="wrap_content"
android:layout_margin="10dp"
android:layout_alignLeft="@+id/cancel_button"
android:layout_alignRight="@+id/continue_button"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/lost_connection"
android:layout_centerHorizontal="true" />
<TextView
android:layout_height="wrap_content"
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_below="@+id/heading"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_centerHorizontal="true"
android:layout_alignLeft="@+id/cancel_button"
android:layout_alignRight="@+id/continue_button"
android:gravity="center"
android:layout_margin="10dp"
android:text="@string/try_again" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_toRightOf="@+id/cancel_button"
android:layout_below="@+id/description"
android:layout_centerHorizontal="true"
android:id="@+id/dismiss_button"
android:text="@string/dismiss" />
</RelativeLayout>
这就是布局编辑器中的样子:
但这就是它在设备上的样子:
顶部和右侧有一些奇怪的额外空间,按钮垂直压缩。
答案 0 :(得分:2)
该空白区域是对话框标题。创建DialogFragment
时可以将其关闭为:
DialogFragment df = new MyDialogFragment();
df.setStyle(DialogFragment.STYLE_NO_TITLE, 0);
df.show(ft, "dialog");
设置样式中的0
允许平台选择合适的样式,而"dialog"
是您要为对话框片段设置的任何标记。
答案 1 :(得分:1)
我认为顶部的额外奇怪空间是对话标题的位置。正如我在屏幕截图中看到的那样,您使用了一个对话框并将自定义视图扩展到该对话框中?
我想尝试使用yourDialog.getWindow()隐藏对话框的标题.requestFeature(Window.FEATURE_NO_TITLE);