Android Custom PopupWindow / Dialog - PullRequest
       17

Android Custom PopupWindow / Dialog

14 голосов
/ 05 мая 2010

Я пытаюсь получить полностью настраиваемое диалоговое окно или всплывающее окно без каких-либо стандартных элементов управления пользовательского интерфейса Android (заголовок, фон, кнопки и т. Д.).

Возможно ли это вообще? Я часами искал это, но не повезло ... Кажется, это легко возможно, но я не могу его найти.

Предпочтительно это было бы путем надувания View из XML, но на этом этапе все, что могло бы просто работать, было бы хорошо.

Спасибо.

Ответы [ 2 ]

28 голосов
/ 05 мая 2010

Шаги, которые я предпринял:

  1. Создать расширение класса Диалог .
  2. В onCreate вызовите setContentView(x, y), где x - ваш R.layout, а y - R.style.popupStyle (см. Ниже).
  3. В вашем файле res / values ​​/ style.xml вы должны переопределить стиль DialogWindow по умолчанию. Я попытался просто сделать стиль, который имеет этот в качестве родителя, но он все еще не очищал все значения по умолчанию. Поэтому я проверил дерево git для Android и получил стиль по умолчанию и просто скопировал его. Это один:
<style name="Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item>
    <item name="android:windowBackground">@android:drawable/panel_background</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

Вы получите несколько ошибок, просто решите их, скопировав дополнительные материалы из официальных файлов Android styles.xml и themes.xml. Вот содержимое моего файла styles.xml: http://pastebin.com/RRR15YYS

Это просто дает вам белое всплывающее окно, без границ, ничего. Начните настройку. :)

Спасибо mbaird за то, что поставили меня на правильный путь.

[править] Мне нужно было снова найти свой собственный ответ, и я потратил не менее десяти минут на поиск официальных файлов стилей / тем для Android, так что вот они, для дальнейшего использования: styles.xml и themes.xml .

8 голосов
/ 05 мая 2010

Похоже, вы пытаетесь действительно настроить AlertDialog . Для того, что вы хотите сделать, вам лучше всего создать собственный класс, который расширяет Диалог , аналогично тому, как вы создаете действия, написав класс, который расширяет Activity .

Вы можете установить макет XML, вызвав setContentView () внутри метода onCreate () вашего пользовательского класса Dialog, точно так же, как и в Activity.

Я сталкивался с ограничениями того, насколько сильно вы можете настраивать AlertDialogs в прошлом, и я только что реализовал свои собственные классы Dialog, чтобы получить необходимый уровень настройки.

...