#android #android-activity #themes
#Android #android-активность #темы
Вопрос:
Я пишу свое маленькое приложение для Android. Я открываю диалоговое окно управления, которое представляет собой красивое, не полноэкранное диалоговое окно с закругленными углами, установив android:theme="@android:style/Theme.Dialog"
для действия в моем манифесте. Все работает так, как я ожидал. Однако это всего лишь тусклый диалог с серым названием, как на этом скриншоте:
Однако я заметил, что многие приложения, когда у них появляются диалоговые окна, имеют красивый заголовок в синей тематике, как на этом снимке экрана.
Я бы предположил, что эта тема является какой-то общей темой, поскольку она отображается во множестве различных приложений. Я бы предположил, что это что-то встроенное в ОС. (Мой телефон очарован официальным выпуском Froyo). Конечно, это могло быть что-то, что каждый разработчик просто перекодировал самостоятельно, но я сомневаюсь в этом.
Предполагая, что это общая тема, как мне использовать ее в моем приложении? Какие изменения мне нужно внести в свою активность, чтобы она использовала эту тему?
Заранее спасибо!
Ответ №1:
Вы можете настроить свое действие на использование темы по умолчанию, например Theme.Черный. Есть темы по умолчанию, и они выполнены в стиле R. хотя я не уверен, какие из них доступны для каких платформ (т. Е. Я думаю, что темы holo предназначены для версии 3.0 и выше…
http://developer.android.com/reference/android/R.style.html
смотрите здесь http://developer.android.com/guide/topics/ui/themes.html для определения ваших собственных пользовательских тем и прокрутите до конца вниз, чтобы использовать «стили платформы» и темы.
Комментарии:
1. Итак, что, если вам нужны некоторые компоненты из двух стилей; можете ли вы как-нибудь объединить их «ИЛИ»? Или вы бы просто определили свой собственный пользовательский стиль, наследующий «большую» тему, которую вы хотите унаследовать, а затем настроили ее, согласно разделу «Определение стилей» второй ссылки?
2. Я бы определил либо свой собственный стиль, наследуя наиболее близкий к заданному. Вы можете устанавливать темы для отдельных компонентов по очереди, когда захотите, но это было бы громоздко и, вероятно, привело бы к непоследовательному внешнему виду.
3. Это похоже на то, что мне нужно будет сделать, я думаю … вероятно, реализовано так же, как этот парень сделал свой обычный внешний вид: londatiga.net/it/how-to-create-custom-window-title-in-android . Спасибо за указания!
Ответ №2:
Довольно беспорядочно (похоже, для этого нет хорошей ссылки), но стили платформы определены в platformsandroid-dataresvaluesstyles.xml и platformsandroid-dataresvaluesthemes.xml . Вы можете покопаться в них и выяснить идентификаторы темы / стиля, которые доступны во время компиляции.
Кроме этого, это действительно просто метод проб и ошибок.
Ответ №3:
Чтобы создать диалоговое окно, вам нужно расширить класс dialog. И чтобы иметь красивую строку заголовка, вы можете использовать:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
и создайте свой собственный заголовок.
для создания заголовка используйте:
setTitle("MyTitle");
Вы также можете назначить свой пользовательский вид для заголовка.
Комментарии:
1. На самом деле я хочу применить этот стиль к действию, которое будет основным действием моего приложения. По сути, я хочу, чтобы мое окно имитировало внешний вид диалогового окна «Добавить ярлык» с главного экрана. Класс Dialog выглядит так, как будто его нужно запустить из другого действия? Судя по тому, что я могу сказать из этого документа-url, на самом деле это не activity: developer.android.com/reference/android/app/Dialog.html