0

Я написал этот SSCCE, чтобы продемонстрировать проблему. Эмулятор NexusFive, но он настроен на использование API22.Почему мой Lollipop ActionBar не показывает какой-либо цвет (по существу, colorPrimary)?

enter image description here

SSCCE

разреш/значения/colors.xml

<?xml version="1.0" encoding="utf-8"?> 

<resources> 
    <color name="primaryColor">#69F0AE</color> <!-- Light ferozi --> 
    <color name="primaryColorDark">#00E676</color> <!-- Darker Ferozi --> 
    <color name="accentColor">#F44336</color> <!-- Red 500 --> 
</resources> 

разреш/значения/styles.xml

разреш/значения-V21/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:colorPrimary">@color/primaryColor</item> 
     <item name="android:colorPrimaryDark">@color/primaryColorDark</item> 
     <item name="android:colorAccent">@color/accentColor</item> 
    </style> 
</resources> 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 

    tools:context="practice_projects.material_design_google_now_like_searchbox_four.MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

ссылается на эту ссылку https://developer.android.com/training/material/theme.html –

+2

Вы упомянули тему в манифестном файле для своей деятельности? – Raghunandan

+0

Вы можете удалить андроид в теге товаров Look @ https://chris.banes.me/2014/10/17/appcompat-v21/ – Raghunandan

ответ

0

Th e parent для темы Materail должен быть определен :. Для примера:

<resources> 
    <!-- inherit from the material theme --> 
    <style name="AppTheme" parent="android:Theme.Material"> 
    <!-- Main theme colors --> 
    <!-- your app branding color for the app bar --> 
    <item name="android:colorPrimary">@color/primary</item> 
    <!-- darker variant for the status bar and contextual app bars --> 
    <item name="android:colorPrimaryDark">@color/primary_dark</item> 
    <!-- theme UI controls like checkboxes and text fields --> 
    <item name="android:colorAccent">@color/accent</item> 
    </style> 
</resources> 
+1

AppBaseTheme имеет родительский 'Theme.AppCompat' – Raghunandan

0

Try изменить тему к этому:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="android:colorPrimary">@color/primaryColor</item> 
     <item name="android:colorPrimaryDark">@color/primaryColorDark</item> 
     <item name="android:colorAccent">@color/accentColor</item> 
     ... 
</style> 

Добавить панель инструментов в вашем activity_main.xml:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/abc_action_bar_default_height_material" 
    android:background="?attr/colorPrimary" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

И от вашего AppCompatActivity:

setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
+0

Он будет работать, когда Я использую «Панель инструментов». Я знаю это, но вопрос в том, почему он не работает со стандартным «ActionBar». – Solace

2

AppCompatActivity не узнает android:colorPrimary. Если вы только изменяете эти свойства, совершенно не нужно создавать v21 styles.xml. Если вы настраиваете другие свойства для v21, просто переместите свойства цвета в базовую тему и удалите их из v21 styles.xml.

+0

Это не помогло = ( – Solace

+1

Что вы сделали? Вы удалили стили v21? – tachyonflux

+0

Нет, я прокомментировал весь элемент '