我可以在代码中通过工具栏中的色调设置导航图标:
Toolbar toolbar = findViewById(R.id.biometry_agreement_toolbar);
Drawable drawable = AppCompatResources.getDrawable(requireContext(), R.drawable.ic_24_close);
drawable.setColorFilter(ColorGenerator.buildColorFilterByAttr(toolbar.getContext(), R.attr.colorMaskColored));
toolbar.setNavigationIcon(drawable);
或者我可以在xml中设置这样的图标,但是在这种情况下,由于没有属性NavigationIconTint,我无法设置色调:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_24_close"
app:titleTextColor="@color/color_primary"
tools:title="@string/title"/>
是否可以在没有Java代码的情况下以某种方式设置导航图标的色调?或在工具栏中设置自定义图标会清除所有色调和颜色?
我不喜欢从Java设置图标,因为没有很好的代码重用来初始化工具栏。
我尝试了不同的自定义样式,覆盖了colorControlNormal,但没有运气。
预先感谢
答案 0 :(得分:0)
对于AndroidX,您应该使用
<com.google.android.material.appbar.MaterialToolbar
代替
<androidx.appcompat.widget.Toolbar
然后尝试一下
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/mt_main_toolbar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:elevation="1dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
像这样使用它
mt_main_toolbar.navigationIcon.setTint(Color.RED)
使用XML
<style name="TintedNavigation" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="tint">@color/nav_button_tint</item>
并以您的风格使用
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="toolbarNavigationButtonStyle">@style/TintedNavigation</item>
</style>
对于AndroidX
<style name="CustomToolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
<item name="colorOnPrimary">@color/yourColour</item>
</style>
答案 1 :(得分:0)
请参考下面的答案How to change Toolbar home icon color
尝试下面的代码,但它可能会影响整个主题的颜色,例如单选按钮等,
@ color / colorControlNormal