android - 按主题或样式更改工具栏导航图标色调或颜色

标签 android android-toolbar styling android-theme

<分区>

我可以通过代码在工具栏中使用 tint 设置导航图标:

  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 中设置这样的图标,但在这种情况下我无法设置 tint 因为没有属性 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,但没有成功。

提前致谢

最佳答案

对于 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>

关于android - 按主题或样式更改工具栏导航图标色调或颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58110191/

相关文章:

android - 如何在android中将工具栏中的图标居中

html - 水平显示 html 控件

react-native - 在 React Native 中更改应用背景颜色

asp.net - 如何卡住 GridView 中的列

java - 谁能告诉我为什么 RxJava2 (v2.2.4) 中的共享运算符没有按照我的单元测试中的断言运行?

android - 如何从 Android 中的另一个应用程序关闭/发送到后台 Activity ?

android - 导航图标 toast 提示

android - 通知图标变灰

android - 如何防止 Android 设备进入休眠状态(通过 adb 命令 shell)

Android,用于导航的可重用工具栏 - 将代码放在哪里?