0

J'ai écrit ce SSCCE pour démontrer le problème. L'émulateur est NexusFive mais il est personnalisé pour utiliser API22.Pourquoi mon ActionBar Lollipop ne montre-t-il pas de couleur (essentiellement colorPrimary)?

enter image description here

SSCCE

res/valeurs/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> 

res/valeurs/styles.xml

<resources> 

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


    <style name="AppTheme" parent="AppBaseTheme"> 
     <item name="colorPrimary">@color/primaryColor</item> 
     <item name="colorPrimaryDark">@color/primaryColorDark</item> 
     <item name="colorAccent">@color/accentColor</item> 
    </style> 

</resources> 

res/valeurs-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

référez-vous à ce lien https://developer.android.com/training/material/theme.html –

+2

Avez-vous référé le thème dans le fichier manifeste de l'activité? – Raghunandan

+0

Vous pouvez supprimer l'androïde dans la balise d'article Look @ https://chris.banes.me/2014/10/17/appcompat-v21/ – Raghunandan

Répondre

0

Th Le parent pour le thème Materail doit être défini: Par exemple:

<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 a un parent 'Theme.AppCompat' – Raghunandan

0

Essayez de changer votre thème à ceci:

<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> 

Ajouter la barre d'outils à votre 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" /> 

Et de votre AppCompatActivity:

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

Il fonctionnera quand J'utilise un 'Toolbar', je le sais, mais la question est de savoir pourquoi ça ne marche pas avec le' ActionBar' standard. – Solace

2

Un AppCompatActivity ne reconnaîtra pas android:colorPrimary. Si vous modifiez uniquement ces propriétés, il est totalement inutile de créer un fichier styles.xml v21. Si vous personnalisez d'autres propriétés pour v21, il vous suffit de déplacer vos propriétés de couleur vers le thème de base et de les supprimer de v21 styles.xml.

+0

Cela n'a pas aidé = ( – Solace

+1

Qu'avez-vous fait Avez-vous supprimé vos styles v21? – tachyonflux

+0

Non, j'ai commenté l'élément entier '