Все остальные ответы здесь имеют смысл, но они не соответствуют тому, что нужно Фабиану. Вот мое решение. Возможно, это не идеальное решение, но оно работает для меня. Он показывает диалоговое окно в полноэкранном режиме, но вы можете указать отступ сверху, снизу, слева или справа.
Сначала поместите это в ваш файл 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 - это в основном то, что вам нужно. android: windowBackground = @ color / Black0Percent - это просто код цвета, объявленный в моем файле color.xml
Рез / значения / 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. Он переопределяет макет окна диалога и дает мне возможность установить отступы и изменить непрозрачность фона. Возможно, это не идеальное решение, но я надеюсь, что оно поможет вам ..:)