我已将我的 SDK 更新为 API 21,现在后退/后退图标是一个指向左侧的黑色箭头。
我希望它是灰色的。我怎样才能做到这一点?
例如,在 Play 商店中,箭头是白色的。
我这样做是为了设置一些样式。我用过@drawable/abc_ic_ab_back_mtrl_am_alpha。homeAsUpIndicator该drawable是透明的(只有alpha),但箭头显示为黑色。我想知道我是否可以像在DrawerArrowStyle. 或者,如果唯一的解决方案是创建 my@drawable/grey_arrow并将其用于homeAsUpIndicator.
@drawable/abc_ic_ab_back_mtrl_am_alpha
homeAsUpIndicator
DrawerArrowStyle
@drawable/grey_arrow
<!-- Base application theme --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item> <item name="actionBarStyle">@style/MyActionBar</item> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> <item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> <item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item> </style> <!-- ActionBar style --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid"> <item name="android:background">@color/actionbar_background</item> <!-- Support library compatibility --> <item name="background">@color/actionbar_background</item> </style> <!-- Style for the navigation drawer icon --> <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="spinBars">true</item> <item name="color">@color/actionbar_text</item> </style>
到目前为止,我的解决方案是使用@drawable/abc_ic_ab_back_mtrl_am_alpha看起来是白色的 ,然后使用照片编辑器将其绘制成我想要的颜色。它有效,尽管我更@color/actionbar_text喜欢在DrawerArrowStyle.
@color/actionbar_text
您可以通过代码来实现它。获取后退箭头drawable,用滤镜修改颜色,设置为后退按钮。
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(getResources().getColor(R.color.grey), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow);
修订版 1:
从 API 23 (Marshmallow) 开始,可绘制资源abc_ic_ab_back_mtrl_am_alpha更改为abc_ic_ab_back_material.
abc_ic_ab_back_mtrl_am_alpha
abc_ic_ab_back_material
编辑:
您可以使用此代码来实现您想要的结果:
toolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.blue_gray_15), PorterDuff.Mode.SRC_ATOP);