Во-первых, насколько я знаю, вы не можете перемещать детей макета за пределы их родителей.
Я никогда не пробовал точно, что вы собираетесь, но я думаю, что это можно сделать.Хитрость заключается в том, чтобы пойти с действием с темой диалога (примеры этого можно найти на сайте разработчика или в демонстрациях API).Убедитесь, что корневой узел вашего макета имеет ширину и высоту, равную wrap_content.Ваш корневой макет должен быть RelativeLayout и не иметь ФОНА (android: background = "# 0000").
Затем добавьте другой макет к корневому узлу (возможно, будет работать FrameLayout) с настраиваемым элементом drawable для фона.(или используйте тот, который используется в диалоговом окне по умолчанию из каркаса), а ширина и высота установлены равными fill_parent или match_parent.Установите для android: padding какое-то значение dip, которое вытягивает фон из края диалогового окна.
Осталось только добавить другие элементы макета в корневой узел.FrameLayout будет нарисован ниже всего остального, а отступы создадут иллюзию границ, которые не охватывают ваш пользовательский интерфейс.
Обновление Yikes, только что пробовал выше с хорошими и плохими результатами.Во-первых, вы определенно захотите взглянуть на пример «Custom Dialog» из демонстрации API, который использует:
Создайте действие, которое использует вышеупомянутый файл макета xml, и задайте стиль для действия Theme.CustomDialog, который вы определили в xml / styles.xml.Это даст вам красный фон для вашей деятельности.Затем вы можете отредактировать файл формы fill_box, чтобы только один атрибут фона был установлен как невидимый ("# 0000").Результатом должно быть диалоговое действие без фона.
Далее я попытался взломать фон, используя свои мысли сверху.Идея должна заключаться в том, что позади других элементов пользовательского интерфейса нарисован фальшивый фон, который не охватывает их, поэтому его можно «сжать» с помощью layout_margin и не повлиять на них.Проблема здесь заключается в том, что для фонового фона необходимо установить ширину и высоту относительно других элементов пользовательского интерфейса, поэтому он как бы ДОЛЖЕН охватывать их, поэтому он может правильно измерять свою собственную ширину и высоту относительно них.
Так что я думаю, что решение могло бы заключаться в том, чтобы сделать большую часть того, что я сказал выше, за исключением того, что не пытайтесь использовать фоновые вещи.Просто используйте 9-патч для рисования фона корневого макета и уменьшите края фона, чтобы нарисовать его дальше, чем ваш контент.Вы все равно использовали бы пользовательские темы сверху с невидимой темой окна.