Wszystkie pozostałe odpowiedzi tutaj mają sens, ale nie spełniały wymagań Fabiana. Oto moje rozwiązanie. To może nie być idealne rozwiązanie, ale działa dla mnie. Wyświetla okno dialogowe na pełnym ekranie, ale możesz określić wypełnienie u góry, u dołu, z lewej lub z prawej strony.
Najpierw umieść to w swoim res / wartości / 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>
Jak widać mam tam Androida: paddingTop = 20dp jest w zasadzie tym, czego potrzebujesz. Android: windowBackground = @ kolor / Black0Percent jest tylko kod koloru ogłoszony na moim color.xml
res / wartości / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Ten kod koloru służy jedynie jako manekin do zamiany domyślnego tła okna okna dialogowego na kolor przezroczystości 0%.
Następnie skompiluj niestandardowy układ okna dialogowego 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>
Wreszcie jest nasze okno dialogowe, które ustawia niestandardowy widok, który korzysta z naszego pliku 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();
Wniosek: Próbowałem zastąpić motyw okna dialogowego w pliku styles.xml o nazwie CustomDialog. Zastępuje układ okna dialogowego i daje mi możliwość ustawienia wypełnienia i zmiany krycia tła. To może nie być idealne rozwiązanie, ale mam nadzieję, że ci to pomoże :)