Поля не работают для диалогов, я думаю, что окно верхнего уровня не является типом макета, который поддерживает поля.Я видел сообщения о том, что поля будут работать, когда они определены как стиль диалога (а не как элемент представления верхнего уровня), но это тоже не похоже на работу.
Что нужно сделать, чтобы обойти этопроблема в том, чтобы использовать inset
drawable для фона Dialog, и настроить любой отступ, чтобы учесть дополнительную вставку фона.В приведенном ниже примере я просто установлю левые и правые поля.
Фон диалогового окна:
<?xml version="1.0" encoding="utf-8"?>
<!-- drawable is a reference to your 'real' dialog background -->
<!-- insetRight and insetLeft add the margins -->
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/dialog_background"
android:insetRight="10dp"
android:insetLeft="10dp">
</inset>
Основной вид диалогового окна:
<?xml version="1.0" encoding="utf-8"?>
<!-- paddingTop / paddingBottom padding for the dialog -->
<!-- paddingLeft / paddingRight padding must add the additional inset space to be consistent -->
<!-- background references the inset background drawable -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:background="@drawable/dialog_background_inset">
<!-- ...the rest of the layout... -->
Вы также можетенеобходимо установить цвет фона самого диалога прозрачным.Добавьте цветовой ресурс, например, так:
<color name="transparent">#00000000</color>
И установите для него цвет фона окна диалога (примечание: вы не можете назначить цвет напрямую, затмение будет жаловаться)
<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>
Этот стиль должен быть передан конструктору вашего диалога в качестве аргумента theme
, как в new Dialog(context, R.style.Dialog);