Все остальные ответы здесь имеют смысл, но они не отвечают требованиям Фабиана. Вот мое решение. Возможно, это не идеальное решение, но оно работает для меня. Он показывает диалоговое окно в полноэкранном режиме, но вы можете указать отступ сверху, снизу, слева или справа.
Сначала поместите это в ваш файл res / values / styles.xml:
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/Black0Percent</item>
<item name="android:paddingTop">20dp</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsFloating">false</item>
</style>
Как видите, у меня есть android: paddingTop = 20dp - в основном то, что вам нужно. Андроид: windowBackground = @ цвет / Black0Percent только цветовой код объявлен на моем color.xml
RES / значения / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Этот Цветовой код просто служит фиктивным, чтобы заменить фон окна Диалога по умолчанию цветом прозрачности 0%.
Далее создайте пользовательский макет диалога res / layout / dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialoglayout"
android:layout_width="match_parent"
android:background="@drawable/DesiredImageBackground"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="18dp" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dummy Button"
android:textSize="18dp" />
</LinearLayout>
Наконец, вот наш диалог, который устанавливает пользовательское представление, которое использует наш dialog.xml:
Dialog customDialog;
LayoutInflater inflater = (LayoutInflater) getLayoutInflater();
View customView = inflater.inflate(R.layout.dialog, null);
// Build the dialog
customDialog = new Dialog(this, R.style.CustomDialog);
customDialog.setContentView(customView);
customDialog.show();
Заключение: я попытался переопределить тему диалога в файле styles.xml с именем CustomDialog. Он переопределяет макет окна диалога и дает мне возможность установить отступы и изменить непрозрачность фона. Возможно, это не идеальное решение, но я надеюсь, что оно поможет вам .. :)