Как мне использовать общие стили пользовательского интерфейса в Android?

#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