it-swarm.com.ru

Как использовать тему Holo.Light, но с помощью ActionBar использовать Hulu без ICS?

Я хотел бы иметь темный ActionBar, но остальная часть приложения использует тему Holo.Light. Я знаю, что есть тема Theme.Holo.Light.DarkActionBar в ICS/4.0, но я хочу, чтобы это также работало в Honeycomb/3.0 +.

В данный момент я использую темную тему Holo, а для остальных своих компонентов я использую ContextThemeWrapper. Но это много работы и может легко привести к ошибкам.

Это возможно?

15
Thomas

Создайте собственный стиль и установите для родительского стиля тему «голографический свет», а для панели действий - «обычный голографический».

xML-файл с чем-то вроде этого должен сделать работу (только из моей памяти):

<style name="appstyle0" parent="Android:style/Theme.Holo.Light">
    <item name="Android:actionBarStyle">@Android:style/Widget.Holo.ActionBar</item>
</style>

Затем установите appstyle0 в вашем AndroidManifest.xml в качестве стиля, и во всех ваших действиях используются темы светлого цвета, а стиль панели действий - темного цвета.

Правка: Я проверил, почему мой первый ответ не работает.

<style name="Widget.Holo.Light.ActionBar" parent="Widget.Holo.ActionBar">
    <item name="Android:titleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Title</item>
    <item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle</item>
    <item name="Android:background">@Android:drawable/ab_transparent_light_holo</item>
    <item name="Android:backgroundStacked">@Android:drawable/ab_stacked_transparent_light_holo</item>
    <item name="Android:backgroundSplit">@Android:drawable/ab_bottom_transparent_light_holo</item>
    <item name="Android:homeAsUpIndicator">@Android:drawable/ic_ab_back_holo_light</item>
    <item name="Android:progressBarStyle">@Android:style/Widget.Holo.Light.ProgressBar.Horizontal</item>
    <item name="Android:indeterminateProgressStyle">@Android:style/Widget.Holo.Light.ProgressBar</item>
</style>

Панель действий определена в файле styles.xml с атрибутами, которые задаются основной темой в целом . Прежде всего BG является прозрачным, поэтому вы должны использовать «Widget.Holo.Light.ActionBar.Solid» в качестве родительского. Затем вы должны установить различные элементы один за другим в темную тему . Давайте возьмем titleTextStyle в качестве примера:

<style name="TextAppearance.Holo.Widget.ActionBar.Title.Own"
       parent="TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="Android:textColor">@Android:color/primary_text_holo_dark</item>
    <item name="Android:textColorHighlight">@Android:color/highlighted_text_holo_dark</item>
    <item name="Android:textColorHint">@Android:color/hint_foreground_holo_dark</item>
    <item name="Android:textColorLink">@Android:color/holo_blue_light</item>
</style>

Установите это сейчас как.

<item name="Android:titleTextStyle">@Android:style/TextAppearance.Holo.Widget.ActionBar.Title.Own</item>

Действуйте так с атрибутами выше xml. 

Чтобы найти все связанные атрибуты, найдите в файлах styles.xml и themes.xml параметры . Извините, но я думаю, что нет простого способа, в соответствии с тем, что я вижу ...

24
KarlKarlsom

Я столкнулся с подобной проблемой, когда я хотел поместить пользовательское представление в панель действий. Я хотел темную панель действий, в то время как остальная часть приложения оставалась светлой. Точнее у меня были блесны в панели действий.

Сначала ваша тема должна расширяться 

<style name="MyTheme.Light" parent="Android:Theme.Holo.Light.DarkActionBar">

Далее, из вашей деятельности, используйте getActionBar().getThemedContext() в качестве контекста для раздувания ваших взглядов. В моем случае это то, что я передал своим адаптерам массива блесны. 

Работал отлично для меня.

5
kristesla

Нашли это легко ... 100% работает

добавьте следующую строку в Assemblyinfo.cs

[Assembly: Application(Theme = "@Android:style/Theme.Material.Light.DarkActionBar")]
0
Rajat