Toutes les autres réponses ici ont du sens, mais elles ne répondaient pas aux besoins de Fabian. Voici ma solution. Ce n'est peut-être pas la solution parfaite, mais cela fonctionne pour moi. Il affiche une boîte de dialogue qui est en plein écran mais vous pouvez spécifier un remplissage en haut, en bas, à gauche ou à droite.
Mettez d'abord ceci dans votre 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>
Comme vous pouvez le voir, j'ai Android: paddingTop = 20dp est fondamentalement ce dont vous avez besoin. L' androïde: windowBackground = @ color / Black0Percent n'est qu'un code couleur déclaré sur mon color.xml
res / values / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Ce code couleur sert simplement de modèle pour remplacer l'arrière-plan de la fenêtre par défaut de la boîte de dialogue par une couleur de transparence 0%.
Créez ensuite la mise en page de dialogue personnalisée 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>
Enfin, voici notre boîte de dialogue qui définit une vue personnalisée qui utilise notre 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();
Conclusion: j'ai essayé de remplacer le thème de la boîte de dialogue dans le styles.xml nommé CustomDialog. Il remplace la disposition de la fenêtre de dialogue et me donne la possibilité de définir un remplissage et de changer l'opacité de l'arrière-plan. Ce n'est peut-être pas la solution parfaite, mais j'espère que cela vous aidera .. :)