AlertDialog:顶部边距

AlertDialog: Margin on top

我的 AlertDialog 在顶部显示了额外的边距,而我没有声明它。

import android.support.v7.app.AlertDialog;    

AlertDialog.Builder builder = new AlertDialog.Builder(this.act);
builder.setView(R.layout.dialog_progress);
builder.setCancelable(false);
builder.setNegativeButton(R.string.cancel, null);
builder.create().show();

dialog_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:gravity="center"
          android:orientation="horizontal">

   <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:indeterminateTint="@color/colorPrimary"/>

    <TextView
        style="@style/TextView.Medium"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:text="@string/fetching_location"/>
</LinearLayout>

我的应用程序的其他对话框看起来还不错。

经过几个小时的搜索,我终于找到了为什么我的对话框布局如此奇怪:

AndroidStudio 从包 android.support.v7.app 中导入了 AlertDialog。我在我的应用程序中使用的其他对话框是从包 android.app 中导入的。更改导入后一切正常:

(改变了重力并添加了一些轻微的填充)

也许这会对遇到同样问题的每个人有所帮助。

使用windowNoTitle:

  1. 为 AlertDialog 创建样式:
    <style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">#ffffff</item>
        <item name="android:textColorPrimary">#000000</item>
        <item name="android:textColor">@000000</item>
        <item name="android:typeface">monospace</item>
        <item name="android:textSize">12sp</item>
    </style>
  1. 在创建 AlertDialog 时定义此样式

    AlertDialog.Builder builder = new AlertDialog.Builder(container.getContext(), R.style.AlertDialogCustom);