2015-06-01 15 views
20

weg ein Problem mit dem ausgewählten Hintergrund in der Lage der Elemente Mit der Standalone-Symbolleiste hat nach diesem Artikel nicht auch nicht funktioniert:Hintergrund Ripple Effect auf Standalone-Toolbar Artikel ist

http://blog.mohitkanwal.com/blog/2015/03/07/styling-material-toolbar-in-android/

überprüfen Sie die normale Symbolleiste Im folgenden Screenshot ist der Auswahlschalter für Ripple-Effekte bei Verwendung der eigenständigen Symbolleiste nicht mehr vorhanden.

hier ist mein Stil:

<style name="ToolbarTheme" parent="Widget.AppCompat.Toolbar"> 
     <item name="actionMenuTextColor">@color/green</item> 
     <item name="drawerArrowStyle">@style/DrawerArrowToggle</item> 
     <item name="colorControlNormal">@color/white</item> 
     <item name="colorControlActivated">@color/white</item> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="titleTextAppearance">@style/ActionBar.TitleText</item> 
     <item name="android:actionOverflowButtonStyle">@style/MoreActionButton</item> 
     <item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item> 
     <item name="selectableItemBackground">?android:selectableItemBackground</item> 
     <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item> 
     <item name="colorControlHighlight">@color/accentColor</item> 
    </style> 

EDIT: Nach der Ausgabe von meinem Code zu isolieren konnte ich das Problem reproduzieren, und es scheint, um es in die neuen Support-Design-Bibliothek verwendet ist. Und hier ist der Test-Code, der das Problem hat:

TestToolbar.zip

enter image description here

+1

Was ist Ihr Problem? Sie bekommen die Selektoren nicht? – Kartheek

+0

Ich bekomme die Selektoren der Toolbar-Elemente nicht, diesen grünen Ripple-Effekt hinter dem Suchelement auf dem obigen Bild, es ist weg, wenn ich eine eigenständige Symbolleiste anstelle einer normalen Symbolleiste verwende. –

+0

Es könnte ein Problem sein, also habe ich einen Fehler für die Bibliothek eingereicht: https://code.google.com/p/android/issues/detail?id=176431 –

Antwort

20

Dies wurde mit Android 5.1 genymotion Emulator getan

Ich habe nicht das Problem herauszufinden, aber ich habe gerade versucht um eine Symbolleiste zu erstellen die gleiche wie Ihre, aber mit dem Entfernen einiger Stil, den ich nicht habe

hier ist mein Stil

<style name="ToolbarTheme" 
     parent="Widget.AppCompat.Toolbar"> 
    <item name="actionMenuTextColor">#1bff3a</item> 
    <item name="colorControlNormal">#FFF</item> 
    <item name="colorControlActivated">#FFF</item> 
    <item name="android:textColorPrimary">#FFF</item> 
    <item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item> 
    <item name="selectableItemBackground">?android:selectableItemBackground</item> 
    <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item> 
    <item name="colorControlHighlight">@color/accentColor</item> 
    </style> 

My Toolbar Layout

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?colorPrimary" 
     app:theme="@style/ToolbarTheme" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     /> 

Mein Menü

<item 
     android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     android:icon="@drawable/abc_ic_clear_mtrl_alpha" 
     app:showAsAction="always" 
     /> 

Der Aktivitätscode

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.inflateMenu(R.menu.menu_home); 

Screenshot des Ergebnisses

Screenshot of working toolbar


bearbeiten

nach der Probe das Herunterladen in der Frage zur Verfügung gestellt, das Problem nichts mit Standalone-Symbolleiste zu tun hat, oder actionbar (beide haben das gleiche Problem) bei der Verwendung AppBarLayout scheint das Problem, dass die Ripple Effekt wird auf AppBarLayout anstatt der Ansicht des ausgewählten Menüpunkts gezeichnet, ich werde ein Video aufnehmen, das es erklärt.

das Video: AppBarLayout with Toolbar Video

Ich werde versuchen, eine Lösung für diese zu finden.

5

Es sieht so aus, als ob der Ripple-Effekt immer noch da ist, aber die Ripple-Farbe hat sich geändert.Ich bin mir nicht sicher, was dein Problem ist, aber das sehe ich.

Ich schlage vor, Sie

 <item name="colorControlHighlight">@color/accentColor</item> 

aus dem Code entfernen und erneut ausführen. Wenn die Wellen nicht angezeigt werden (sollten sie), ändern Sie die Akzentfarbe.

1

Chris Bane Antwort auf die ursprüngliche Frage:

https://code.google.com/p/android/issues/detail?id=176431

Dies liegt daran, standardmäßig attr/actionBarItemBackground eine unbeschränkte RippleDrawable ist, was bedeutet, dass es Projekte/zieht auf die nächste übergeordnete?. In diesem Fall ist dies das CollapsingToolbarLayout, das Sie nicht sehen können.

Hier können wir aus bibliothekarischer Sicht nicht viel tun. Die ‚Problemumgehung‘ ist actionBarItemBackground einzustellen nicht randlos sein:

<style name="Theme.Toolbar.Collapsing" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="actionBarItemBackground">?attr/selectableItemBackground</item> 
</style> 

<Toolbar 
    ... 
    android:theme="Theme.Toolbar.Collapsing" /> 
5

Die Abhilfe in Bezug auf die selectableItemBackground auch nicht für mich arbeiten. Die beste Strategie, die ich bis jetzt kam ist den Hintergrund der Toolbar transparent zu setzen:

<android.support.v7.widget.Toolbar 
    ... 
    android:background="@android:color/transparent"/> 

Dies ermöglicht es den Welleneffekt (geerntete zum ActionBar heigth) in erweitert/geschlossen/Zwischenzustand.

0

für mich Dies funktioniert:

ein eigenes Thema im styles.xml definieren

<style name="MyAppbarTheme" parent="@style/ThemeOverlay.AppCompat.Light"> 
    <item name="colorControlHighlight">@color/colorAccent</item> 
</style> 

dann auf dem AppBarLayout oder Toolbar

dieses Thema gilt
<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/MyAppbarTheme" >