it-swarm.asia

Araç Çubuğu Gezinme ve Taşma Menüsü simgelerini (appcompat v7) nasıl değiştirebilirim?

V7 Toolbar ile zor zaman geçiriyorum. Bir zamanlar ActionBar için basit bir görev neydi, şimdi aşırı karmaşık görünüyor. Hangi stilde olursa olsun, gezinme simgesini (Çekmeceyi açan) veya taşma menü simgesini (bir menü açan) değiştiremiyorum. 

Bu yüzden Toolbar var

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@color/ghex"
    Android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Light"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    >

Kod gibi gözüküyor

//before in the code I do
mToolbar = (Toolbar) findViewById(R.id.toolbar);

private void initToolbar() {
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
}

Şimdi, bu iki simge için Drawable dosyasını değiştirmem gerekiyor.

Uyumluluk v7 Toolbar için bunu nasıl yaparım? Sanırım çekmece açıldığında görünen oku değiştirmem gerekecek (Android 5.0).

27
sandalone

Gezinme simgesini değiştirmek için şunları kullanabilirsiniz:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.my_icon);

Taşma simgesini değiştirmek için şöyle bir stil tanımlayabilirsiniz:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="actionOverflowButtonStyle">@style/OverFlow</item>
</style>

<style name="OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
    <item name="Android:src">@drawable/my_overflow_menu</item>
</style>

Her durumda, taşma menüsü gibi standart bir simgeyi değiştirmek iyi bir fikir olmayabilir.

Simgenin rengini değiştirmek isterseniz, kullanabilirsiniz:

<Android.support.v7.widget.Toolbar
  app:theme="@style/ThemeToolbar" />


<style name="ThemeToolbar" parent="Theme.AppCompat.Light">

   <!-- navigation icon color -->
   <item name="colorControlNormal">@color/my_color</item>

    <!-- color of the menu overflow icon -->
    <item name="Android:textColorSecondary">@color/my_color</item>
</style>
102
    mToolbar.setNavigationIcon(R.mipmap.ic_launcher);
    mToolbar.setOverflowIcon(ContextCompat.getDrawable(this, R.drawable.ic_menu));
17
androidmalin

Sağ menü için bunu yapabilirsiniz: 

public static Drawable setTintDrawable(Drawable drawable, @ColorInt int color) {
            drawable.clearColorFilter();
            drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
            drawable.invalidateSelf();
            Drawable wrapDrawable = DrawableCompat.wrap(drawable).mutate();
            DrawableCompat.setTint(wrapDrawable, color);
            return wrapDrawable;
        }

Ve senin faaliyetinde

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_profile, menu);
        Drawable send = menu.findItem(R.id.send);
        Drawable msg = menu.findItem(R.id.message);
        DrawableUtils.setTintDrawable(send.getIcon(), Color.WHITE);
        DrawableUtils.setTintDrawable(msg.getIcon(), Color.WHITE);
        return true;
    }

Sonuç budur:

 enter image description here

4
chry

Yalnızca hamburger/geri simgesinin rengini değiştirmemiz gerekirse, basit, kolay ve daha iyi bir yaklaşım söz konusudur. 

Yalnızca istenen simgenin rengini değiştirdiğinden daha iyidir, oysa colorControlNormal ve Android:textColorSecondary, araç çubuğunun diğer alt görünümlerini de etkileyebilir.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@Android:color/white</item>
</style>
2
Sachin Gupta

Yukarıdaki tüm çözümler benim için API 21'de veya daha büyük bir sürümde çalıştı, ancak API 19'da (KitKat) çalışmadı. Küçük bir değişiklik yapmak, önceki sürümlerde benim için hile yaptı. Widget.Holo yerine Widget.AppCompat uyarısına bakın

<style name="OverFlowStyle"    parent="@Android:style/Widget.Holo.ActionButton.Overflow">
    <item name="Android:src">@drawable/ic_overflow</item>
</style>
1
Eric B.

varsayılan temanıza bu satırı ekleyin;

   <item name="colorControlNormal">@color/my_color</item>
1
alicanozkara

simgelerinizi a Vector ile değiştirmek istiyorsanız, yeni bir tane oluşturun . ve sonra Activity.Java:

Toolbar toolbar = findViewById(R.id.your_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationIcon(R.drawable.your_icon);
mToolbar.setOverflowIcon(ContextCompat.getDrawable(this, R.drawable.your_icon2));

Vector icon Color komutunu değiştirmek için Vector XML dosyasına gidin .. bu durumda your_icon.xml olacaktır, şöyle görünecektir:

<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:width="24dp"
    Android:height="24dp"
    Android:viewportWidth="24.0"
    Android:viewportHeight="24.0">
<path
    Android:fillColor="@color/Your_Color"
    Android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>

Vector öğesinin rengini ayarlamak için bu özellikleri kullandığımızı unutmayın: 

Android:fillColor="@color/Your_Color"

Edit : Renklerinizdeki bir rengi kullanamazsınız. XML veya başka bir yerde, rengin doğrudan Vector'in XML dosyasında çıkartılması gerekir. Bu şekilde görünecektir: 

Android:fillColor="#FFF"
1

Seçenekler menüsü öğelerinin rengini değiştirmek için

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.your_menu, menu)

    menu?.forEach {
        it.icon.setTint(Color.your_color)
    }

    return true
}
0
Belogurow

Bu Kodu Kullanabilirsiniz

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.toolbar_Like:
            item.setIcon(R.drawable.is_like);
            break;
    }
    return true;
}
0
Diako Hasani

etkinlikte kullandığın tema, bir satır kodunun altına ekle

beyaz için

<style name="AppTheme.NoActionBar">
      <item name="Android:tint">#ffffff</item>
  </style>

or 
 <style name="AppThemeName" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="Android:tint">#ffffff</item>
</style>

siyah için 

   <style name="AppTheme.NoActionBar">
      <item name="Android:tint">#000000</item>
  </style>

or 
 <style name="AppThemeName" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="Android:tint">#000000</item>
</style>
0

menü öğesi simgeleri, ok simgesi (geri/yukarı) ve 3 nokta simgesini değiştirmek istiyorsanız, Android:tint kullanabilirsiniz.

  <style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="Android:tint">@color/your_color</item>
  </style>
0
user25