Android Styling / Theming of Просто Поисковый Диалог - PullRequest
3 голосов
/ 25 сентября 2011

tl; dr: Стиль белого текста в теме приложения выбирается диалогом поиска, что делает текст поиска невидимым.

Я сильно борюсь с тем, что кажется тривиальной проблемой.

Мое приложение использует темный фон, и я настроил цвет текста, чтобы он был ярче стандартного серого, используя # EEEEEE.

Я реализовал диалоговое окно поиска (до соты)) и это работает хорошо, но текст в диалоговом окне поиска поднимает тот же #EEEEEE, поэтому он по существу невидим.Даже контекстное меню, отображаемое, когда я долго нажимаю текст поиска, поднимает #EEEEEE, так что текст там тоже невидим.

У меня рвутся волосы, и у меня кончаются волосы.

Стиль:

<style name="master" paret="@android:style/Theme.NoTitleBar">
    <item name="android:textColor">#EEEEEE</item>
    <item name="android:windowNoTitle">true</item>        
</style>

Манифест:

<application android:icon="@drawable/icon"
             android:label="@string/app_label"
             android:theme="@style/master"
             android:hardwareAccelerated="true"
             android:debuggable="true"> 

Ответы [ 2 ]

5 голосов
/ 20 октября 2011

Атрибут android:textColor не предназначен для использования внутри стилей темы, он в первую очередь полезен в стилях оформления виджетов и текста.

Если вы хотите изменить общие цвета текста через тему, используйте вместо этогоandroid:textColor* семейство атрибутов.Их довольно много, и разные виды используют их по-разному, поэтому требуется немного экспериментов (или тщательного изучения исходного кода Android), чтобы все было в порядке.В документации android.R.attr перечислены все.Ищите атрибуты, которые начинаются с textColor....

Чтобы начать, попробуйте эту тему, она будет вести себя лучше, вообще не затрагивая цвета диалогового окна поиска, что, как вам кажется.Кстати, вам не нужно устанавливать android:windowNoTitle в true в вашей теме, поскольку ваша родительская тема уже делает это:

<style name="master" parent="@android:style/Theme.NoTitleBar">
    <item name="android:textColorPrimary">#EEEEEE</item>
    <item name="android:textColorSecondary">#EEEEEE</item>
    <item name="android:textColorTertiary">#EEEEEE</item>
</style>
0 голосов
/ 17 октября 2011

Я попал в ту же проблему, что и вы. Я искал решение, но кажется, что вы просто не можете изменить текстовый цвет диалога. Моим решением было создание собственного диалога на основе этого урока: http://blog.androgames.net/10/custom-android-dialog/

Я значительно расширил это на основе исходного кода Android, всегда используя одни и те же имена методов и т. Д., Чтобы сделать его немного проще.

Это не идеал, но, насколько я знаю, это лучший вариант ...

РЕДАКТИРОВАТЬ: для вашей проблемы может быть более простое решение: не помещайте textColor в тему, но поместите его в стиль. Я не знаю, как вы разрабатываете свое приложение, но я обычно создаю «мастер-стиль», от которого все остальные наследуют (прямой или косвенный). Затем вы можете поместить туда textColor, чтобы все ваши стандартные диалоги по-прежнему имели стандартный textColor.

...