Todas as outras respostas aqui fazem sentido, mas não atendem às necessidades de Fabian. Aqui está uma solução minha. Pode não ser a solução perfeita, mas funciona para mim. Ele mostra uma caixa de diálogo em tela cheia, mas você pode especificar um preenchimento na parte superior, inferior, esquerda ou direita.
Primeiro, coloque isso em 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>
Como você pode ver, eu tenho o Android: paddingTop = 20dp é basicamente o que você precisa. O android: windowBackground = @ color / Black0Percent é apenas um código de cor declarado no meu color.xml
res / valores / color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black0Percent">#00000000</color>
</resources>
Esse código de cores serve apenas como um modelo para substituir o plano de fundo da janela padrão da caixa de diálogo por uma cor de transparência de 0%.
Em seguida, crie o layout de diálogo personalizado 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>
Finalmente, aqui está nossa caixa de diálogo que define a exibição personalizada, que usa nosso 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();
Conclusão: tentei substituir o tema da caixa de diálogo no styles.xml chamado CustomDialog. Ele substitui o layout da janela da caixa de diálogo e me dá a chance de definir um preenchimento e alterar a opacidade do plano de fundo. Pode não ser a solução perfeita, mas espero que ajude você .. :)