Alle anderen Antworten hier sind sinnvoll, aber sie entsprachen nicht den Anforderungen von Fabian. Hier ist eine Lösung von mir. Es ist vielleicht nicht die perfekte Lösung, aber es funktioniert für mich. Es wird ein Dialogfeld angezeigt, das im Vollbildmodus angezeigt wird. Sie können jedoch oben, unten, links oder rechts eine Auffüllung festlegen.
Fügen Sie dies zuerst in Ihre res / values / styles.xml ein:
<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>
Wie Sie sehen können, habe ich dort Android: paddingTop = 20dp ist im Grunde das, was Sie brauchen. Das android: windowBackground = @ color / Black0Percent ist nur ein Farbcode, der in meiner color.xml deklariert ist
res / values / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Dieser Farbcode dient nur als Dummy, um den Standardfensterhintergrund des Dialogfelds durch eine 0% Transparenzfarbe zu ersetzen.
Erstellen Sie als Nächstes das benutzerdefinierte Dialoglayout 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>
Schließlich ist hier unser Dialog, der eine benutzerdefinierte Ansicht festlegt, die unsere dialog.xml verwendet:
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();
Fazit: Ich habe versucht, das Thema des Dialogfelds in der Datei styles.xml mit dem Namen CustomDialog zu überschreiben. Es überschreibt das Layout des Dialogfensters und gibt mir die Möglichkeit, eine Auffüllung festzulegen und die Deckkraft des Hintergrunds zu ändern. Es ist vielleicht nicht die perfekte Lösung, aber ich hoffe es hilft dir .. :)