AppCompat Тема диалога с разноцветным заголовком - ошибка?
У меня есть LoginActivity
где я использую AppCompat
тема как эта:
<activity
android:name=".LoginActivity"
android:theme="@style/Theme.AppCompat.Light.Dialog"
android:label="Login" />
Мне известно, что на данный момент Google еще не добавил Темы материалов в библиотеку AppCompat для DIALOGS, поэтому я предположил, что это будет сделано в Holo. Вместо этого вот что я получаю:
Имейте в виду, я не использую AppCompat
toolBar
, в Activity
Я даже не ссылаюсь на ActionBar
, То, что вы видите выше, является поведением по умолчанию, но я не могу понять, откуда оно. Возможно, это ошибка?
(Так же EditText
поля не окрашены основным цветом для приложения.)
1 ответ
Примечание: см. Мое окончательное редактирование для, возможно, лучшего решения
Для чего это стоит, я думаю, что это ошибка. Тем не менее, действительный обходной путь, который я обнаружил, заключается в использовании @style/Base.Theme.AppCompat.Light.Dialog.FixedSize
, На основании вашего скриншота я думаю, что это будет работать и для вас. Тем не менее, я еще не тестировал окраску палитры.
Из того, что я могу сказать в своем тестировании, это расширяет серую границу, в то же время позволяя вам использовать AppCompat и v21.
Изменить: один побочный эффект в том, что теперь кажется, что все действия диалога имеют одинаковый размер, который может не работать для вас. Кроме того, я не выяснил, как удалить заголовок - requestWindowFeature и supportRequestWindowFeature с Window.FEATURE_NO_TITLE, кажется, вызывает
java.lang.RuntimeException: Unable to start activity ComponentInfo{myclass}:
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
хотя я пробовал это до и после super.onCreate и определенно перед setContentView
Редактирование #2: удаление заголовка с помощью XML-темы работает, и, поскольку у вас нет заголовка, нет никакого странного серого прямоугольника, о котором можно беспокоиться, что означает, что вы можете удалить параметр FixedSize, и диалоговое окно будет обернуть его содержимое, как в предыдущих версиях.
<style name="MyActivityDialogTheme" parent="Base.Theme.AppCompat.Light.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
Редактирование № 3: Вы также можете просто удалить серый фон - это может быть лучшим решением, потому что оно не требует базы. префикс:
<style name="MyTitledActivityDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowTitleBackgroundStyle">@android:color/transparent</item>
<item name="windowActionBar">false</item>
</style>