2017-07-04 4 views
1

Ich möchte die Farbe der Zurück-Schaltfläche in der Symbolleiste ändern, wenn eine Suche angezeigt wird (der eingekreiste weiße Pfeil).So stellen Sie die Farbe der Symbolleiste collapseIcon programmgesteuert ein

enter image description here

enter image description here

ich es geschafft, die Farbe aller anderen Elemente und ich mit dem Zurück-Pfeil Farbe stecke zu ändern.

ich die collapseIcon einstellen (zurück Pfeil ziehbar) von xml:

<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/AppTheme.PopupOverlay" 
    app:collapseIcon=I_WANT_TO_SET_THIS_PROGRAMMATICALLY> 

Ich habe app:collapseIcon, was auch immer ziehbar ich will, und das funktioniert, aber ich brauche es dynamisch zu setzen.

Keiner der Vorschläge, die ich hier gefunden habe, funktioniert für mich.

das nicht:

final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable. abc_ic_ab_back_material); 
upArrow.setColorFilter(myColor, PorterDuff.Mode.SRC_ATOP); 
actionBar.setDisplayHomeAsUpEnabled(true); 
actionBar.setHomeAsUpIndicator(upArrow); 

oder dies:

appBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
    @Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
     Drawable d = ContextCompat.getDrawable(MyActivity.this, R.drawable.ic_back_white); 
     d.setColorFilter(myColor, PorterDuff.Mode.SRC_ATOP); 
     toolbar.setNavigationIcon(d); 

//  Drawable d = ContextCompat.getDrawable(MyActivity.this, R.drawable.ic_back_white); 
//  d.setColorFilter(myColor, PorterDuff.Mode.SRC_ATOP); 
//  getSupportActionBar().setHomeAsUpIndicator(d); 
      } 
     }); 

Weder noch etwas fand ich.

Kann mir bitte jemand helfen?

Danke

Antwort

1

habe es endlich ...

Dies ist, was für mich gearbeitet:

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
AppBarLayout appBar = (AppBarLayout) findViewById(R.id.appbar); 
appBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
    @Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
     for (int i = 0; i < toolbar.getChildCount(); i++) { 
      View view = toolbar.getChildAt(i); 
      if (view instanceof ImageButton) { 
       ImageButton btn = (ImageButton) view; 
       Drawable drawable = btn.getDrawable(); 
       drawable.setColorFilter(new_button_color, PorterDuff.Mode.SRC_ATOP); 
       btn.setImageDrawable(drawable); 
      } 
     } 
    } 
}); 
Verwandte Themen