Tutte le altre risposte qui hanno senso, ma non soddisfano le esigenze di Fabian. Ecco una mia soluzione. Potrebbe non essere la soluzione perfetta ma funziona per me. Mostra una finestra di dialogo che è a schermo intero ma è possibile specificare un'imbottitura in alto, in basso, a sinistra o a destra.
Per prima cosa inseriscilo nel tuo res / valori / 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>
Come puoi vedere, ho Android: paddingTop = 20dp è fondamentalmente quello che ti serve. L' androide: windowBackground = @ color / Black0Percent è solo un codice colore dichiarato sul mio color.xml
res / valori / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Quel codice colore serve solo da manichino per sostituire lo sfondo predefinito della finestra di dialogo con un colore di trasparenza dello 0%.
Quindi crea il layout di dialogo personalizzato 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>
Infine ecco la nostra finestra di dialogo che imposta la visualizzazione personalizzata che utilizza il nostro 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();
Conclusione: ho provato a sovrascrivere il tema della finestra di dialogo in styles.xml denominato CustomDialog. Sovrascrive il layout della finestra di dialogo e mi dà la possibilità di impostare un'imbottitura e modificare l'opacità dello sfondo. Potrebbe non essere la soluzione perfetta ma spero che ti aiuti .. :)