2017-02-23 2 views
0

Ich habe das folgende Problem: Ich versuche, ein App-Design wie Instagram zu erreichen, wo die meisten der App ein helles Thema verwendet. Ich habe jedoch keine Methode gefunden, die Symbolleisten Text und Symbolelemente wie Navigationsleiste und Zurück-Taste schwarz einzufärben.Farbspezifische Elemente von Android Toolbar mit styles.xml

Wenn die folgende style.xml mit

<resources> 
<!-- Base application theme. --> 
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">#FAFAFA</item> 
    <item name="colorPrimaryDark">#BDBDBD</item> 
    <item name="colorAccent">#FF4081</item> 
</style> 

<style name="AppTheme" parent="AppTheme.Base"></style> 

<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.ActionBar"> 
    <!-- Used to for the title of the Toolbar --> 
    <item name="android:textColorPrimary">@color/black</item> 
    <!-- Used to for the title of the Toolbar when parent is Theme.AppCompat.Light --> 
    <item name="android:textColorPrimaryInverse">@color/black</item> 
    <!-- Used to color the text of the action menu icons --> 
    <item name="android:textColorSecondary">@color/black</item> 
    <!-- Used to color the overflow menu icon --> 
    <item name="actionMenuTextColor">@color/black</item> 
</style> 
</resources> 

und dieses Attribut für die Symbolleiste:

android:theme="@style/ToolbarTheme" 

es erzeugt die folgende Konstruktion:

design with custom toolbar theme

Wie Sie können sehen Sie, die Navigationsleiste ist weiß und die Registerkartentitel sind auch weiß.

Ich habe auch versucht, diesen Stil, die nur fein funktionieren würde, aber wenn Sie nicht explizit eine Symbolleiste in Ihrer Tätigkeit wie folgt aufgebaut:

Aktivität Code:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

Style.xml:

Wenn Sie diesen Stil ohne explizite Symbolleiste verwenden, sieht das Design so aus, wie ich es möchte, aber ich kann die Symbolleiste nicht auf diese Weise aufrufen. Wenn Sie die Symbolleiste mit Theme.AppCompat.Light einrichten, wird ein Fehler ausgelöst.

Beachten Sie auch den Unterschied zwischen den beiden Arten: Theme.AppCompat.Light vs Theme.AppCompat.Light.NoActionBar

Alle Ideen, wie dies zu tun?

Antwort

0

Ich ging mit den Standard-Android-Themen jetzt wie folgt aus:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/container" 
    android:theme="@style/ThemeOverlay.AppCompat.Light"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:titleTextColor="@color/black"/> 
</android.support.design.widget.AppBarLayout> 

Dies als weit einfacher ist, versuchen Sie Ihren eigenen Stil zu setzen.