自定义主题和sherlock ActionBar

时间:2012-11-14 19:47:17

标签: android actionbarsherlock android-theme

我正在做一个个人主题,在2.3 android中使用holo小部件。

我这样做了:

 <resources xmlns:android="http://schemas.android.com/apk/res/android">

  <style name="AppThemes" parent="@style/Theme.Sherlock">

    <item name="android:editTextStyle">@style/EditTextAppTheme</item>

    <item name="android:checkboxStyle">@style/CheckBoxAppTheme</item>

    <item name="android:radioButtonStyle">@style/RadioButtonAppTheme</item>

    <item name="android:buttonStyle">@style/ButtonAppTheme</item>

    <item name="android:imageButtonStyle">@style/ImageButtonAppTheme</item>

    <item name="android:spinnerStyle">@style/SpinnerAppTheme</item>

    <item name="android:dropDownSpinnerStyle">@style/SpinnerAppTheme.DropDown</item>

    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemAppTheme</item>

  </style>

</resources>

问题是窗口小部件没有采用正确的样式,而是采用默认样式。我试图强制在编辑文本中分配@ style / EditTextAppTheme并且它工作..所以问题是该主题不适用。

任何想法?

更新:主题应用并且工作良好..独奏问题是在标准主题中显示的对话框中的一些edittext

2 个答案:

答案 0 :(得分:2)

要在API 10及以下的应用中获取全息主题样式,您可以使用HoloEverywhere。它与ActionBarSherlock很好地集成在一起。 ActionBarSherlock包含在子项目中。 https://github.com/ChristopheVersieux/HoloEverywhere

答案 1 :(得分:1)

如果要使用自定义主题,则必须在应用程序主题中设置这些样式属性。然后通过在清单中定义它或在onCreate()方法中将其设置为programmaticaly,将此主题应用于整个App或单个Activity。

例如(对于ABS):

<style name="Theme.myStyle" parent="Theme.Sherlock">
<item name="android:editTextStyle">@style/EditTextAppTheme</item>

<item name="android:checkboxStyle">@style/CheckBoxAppTheme</item>

<item name="android:radioButtonStyle">@style/RadioButtonAppTheme</item>

<item name="android:buttonStyle">@style/ButtonAppTheme</item>

<item name="android:imageButtonStyle">@style/ImageButtonAppTheme</item>

<item name="android:spinnerStyle">@style/SpinnerAppTheme</item>

<item name="android:dropDownSpinnerStyle">@style/SpinnerAppTheme.DropDown</item>

<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemAppTheme</item>
</style>

然后将此主题设置为您的应用程序或您在Manifest中的Activity:

 android:theme="@style/Theme.myStyle" 

或以编程方式:

setTheme(R.style.Theme.myStyle);