2011-09-25 3 views
3

tl; dr: Белый стиль текста в теме приложения подбирается диалогом поиска, что делает поиск текста невидимым.Android Styling/Theming только для поиска Диалог

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

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

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

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

Стиль:

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

Manifest:

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

использовать разные цвета для TextColor? –

+0

Эй, @YashwanthKumar, мне нужен светлый цвет в моем приложении и темный цвет в диалоговом окне поиска. Я все это видел, просто не могу понять, как это сделать сам. –

ответ

5

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

Если вы хотите изменить общие цвета текста по теме, используйте вместо этого семейство атрибутов android:textColor*. Их довольно много, и разные Views используют их по-разному, поэтому для того, чтобы все было в порядке, требуется немного экспериментов (или тщательного изучения исходного кода 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> 
+3

Да! Я буду называть моего первенца, Мартина. –

+1

Как и я! Такая же проблема, большое спасибо за полезный ответ. – Konklone

0

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

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

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

EDIT: для вашей проблемы там может быть более простое решение: не поставить TextColor в тему, но поставить это в стиле. Я не знаю, как вы создаете свое приложение, но я обычно создаю «мастер-стиль», который все остальные наследуют (прямо или косвенно). Затем вы можете разместить textColor там, поэтому все стандартные диалоги будут иметь стандартный textColor.

Смежные вопросы