2014-01-08 6 views
1

Я положил ActionBar в свое приложение и изменил цвет фона, как я покажу ниже. Как ни странно, цвет текста на ActionBar не изменится. (picture)Цвет фона фона ActionBar не меняется

Я посмотрел вокруг и нашел это: <item name="android:actionBarItemBackground">@null</item>

Но я предпочел бы не использовать его, потому что тогда мой minSdk должен быть установлен на 14, в то время как я его в 11 в настоящее время. Я попытался увеличить его до 14, чтобы увидеть, работает ли этот тег, но я снова не мог изменить цвет.

У кого-нибудь есть опыт? Большое спасибо заранее за вашу помощь.

styles.xml:

<style name="AppBaseTheme" parent="Theme.AppCompat"> 
</style> 

<!-- Application theme. --> 
<style name="MyAppTheme" parent="AppBaseTheme"> 
    <item name="android:colorBackground">@color/background</item> 
    <item name="android:background">@color/background</item> 
    <item name="android:textColor">@color/myWhite</item> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 

<!-- ActionBar styles --> 
<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:background">@drawable/actionbar_background</item> 
    <item name="actionMenuTextColor">@color/myWhite</item> 
    <!--Support Library compatibility--> 
    <item name="background">@color/myBlack</item> 
</style> 

вытяжке/actionbar_background:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="@color/myBlack" /> 
</shape> 

меню/login.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item android:id="@+id/action_search" 
     android:title="@string/action_search" 
     android:showAsAction="ifRoom" /> 

     <item android:id="@+id/action_settings" 
     android:title="@string/settings_label" 
     android:showAsAction="never" /> 
</menu> 

И, наконец, внутри класса LoginActivity, то onCreateOptionsMenu метод:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.login, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Еще раз спасибо!

+0

У меня была аналогичная проблема, только моя причина заключалась в том, что я установил стиль в теге темы и при попытке изменить фон программным образом у меня всегда была та же проблема, что и у вас. –

ответ

2

Я понял. Оказывается, я использовал неправильный атрибут - вместо использования android: background в файле styles.xml вам нужно использовать android: windowBackground. android: фон тоже меняет всевозможные вещи.

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