2016-01-03 8 views
0

Я уже пробовал, глядя на следующие нитях, чтобы найти ответ на мой вопрос:не может изменить цвет фона для панели действий

Android unable to change background color of ActionBar

Change Background color of the action bar using AppCompat

... но ни одно из этих решений не имеет помогли мне решить проблему.

Я пытаюсь изменить цвет фона (между прочим) панели действий. До сих пор мне удалось изменить стили для всего остального. Вот мой styles.xml:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item> 
     <item name="actionBarStyle">@style/AppTheme.ActionBar</item> 
     <item name="android:windowBackground">@color/dark_green</item> 
     <item name="android:buttonStyle">@style/AppTheme.Button</item> 
     <item name="android:editTextStyle">@style/AppTheme.EditText</item> 
     <item name="android:listViewStyle">@style/AppTheme.ListView</item> 
     <item name="android:windowActionBar">true</item> 
     <!--<item name="android:colorBackground">@color/dark_green</item>--> 
    </style> 

    <style name="AppTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">@color/dark_green</item> 
     <item name="background">@color/dark_green</item> 
     <item name="android:colorPrimary">@color/dark_green</item> 
     <item name="android:colorPrimaryDark">@color/dark_green</item> 
    </style> 

    <!-- Button theme --> 
    <style name="AppTheme.Button"> 
     <item name="android:background">@drawable/background_button</item> 
     <item name="android:textColor">@android:color/white</item> 
     <item name="android:padding">20dp</item> 
    </style> 

    <!-- Edit Text Theme --> 
    <style name="AppTheme.EditText"> 
     <item name="android:background">@drawable/background_edittext</item> 
     <item name="android:padding">14dp</item> 
     <item name="android:layout_marginBottom">16dp</item> 
     <item name="android:textColorHint">@color/light_gray</item> 
     <item name="android:textCursorDrawable">@null</item> 
     <item name="android:textSize">20dp</item> 
    </style> 

    <style name="AppTheme.ListView"> 
     <item name="android:textColor">@color/text_color</item> 
     <item name="android:divider">@android:color/transparent</item> 
    </style> 

    <declare-styleable name="FixedAspectRatioFrameLayout"> 
     <attr name="aspectRatioWidth" format="dimension" /> 
     <attr name="aspectRatioHeight" format="dimension" /> 
    </declare-styleable> 
</resources> 

Вот мой Android Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="io.myapp.app"> 

    <!-- To auto-complete the email text field in the login form with the user's emails --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/myapp_button" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/title_activity_login" /> 
     <activity 
      android:name=".HomeActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".ListOffersActivity" 
      android:parentActivityName=".HomeActivity" 
      android:launchMode="singleTop"/> 
     <activity 
      android:name=".ViewOfferActivity" 
      android:label="@string/title_activity_view_offer" 
      android:parentActivityName=".ListOffersActivity"> 
     </activity> 
     <activity 
      android:name=".SettingsActivity" 
      android:label="@string/title_activity_settings" 
      android:parentActivityName=".HomeActivity"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="io.myapp.app.HomeActivity" /> 
     </activity> 
     <activity android:name=".ListSavedOffersActivity" 
      android:label="Saved Offers" 
      android:parentActivityName=".HomeActivity" 
      android:launchMode="singleTop"></activity> 
    </application> 

</manifest> 
+0

Есть ли конкретная причина, по которой вы используете тему «Голо», а не «AppCompat»? – ianhanniballake

+0

Оба примера используют тему Theme.AppCompat в качестве базовой темы. Вы используете старую 'Theme.Holo' в своем коде. – Sharj

+0

Не было причин для меня использовать голо. Я обновил код так, чтобы он использовал AppCompat, как показано в других ответах, но у меня все еще такая же проблема. – KillerByte

ответ

0

Ну, через пару дней возиться с ним, я выяснил, что проблема была в основном из-за того, что андроид (с его новой материальной темой и всеми ...) меняет цвет в панели действий при изменении следующие свойства:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light"> 
     <item name="android:colorPrimary">@color/dark_green</item> 
     <item name="android:colorPrimaryDark">@color/darker_green</item> 
</style> 

Это правильно установить цвет ActionBar к @color/dark_green.

+0

Я должен отметить, что эти элементы следует добавлять в дополнение к стилям панели действий, которые я использовал ранее для обратной совместимости. – KillerByte

0

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

В случае, если вы хотите спрятаться от Java, в начале он покажет мигание панели действий.

Так будет и в другом стиле.

Так что лучше вы его от style.xml, но если легкий мигание в порядке, обратитесь к Java.

+0

см. Мой ответ ниже. Я, наконец, понял проблему. – KillerByte

+0

Приятно, что это хорошая работа, и я надеюсь, что она удовлетворяет ваши потребности :) – erluxman

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