最近在android学习之旅中熟悉了Material3。我已经在我的 colors.xml 文件中成功定义了颜色,但是,我遇到了应用栏、工具栏和 FAB 没有应用这些定义的颜色的问题。此外,我使用的是
Theme.Material3.Light.NoActionBar
主题,但工具栏中的图标显示为黑色,而我希望它们为白色。以下是我目前正在使用的代码片段:
简而言之,在我的应用程序中看不到任何在 colors.xml 中定义的颜色
颜色.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Primary Colors -->
<color name="colorPrimary">#2BAD7D</color>
<color name="colorPrimaryVariant">#239366</color>
<color name="colorOnPrimary">#FFFFFF</color>
<!-- Secondary Colors -->
<color name="colorSecondary">#FFFFFF</color>
<color name="colorSecondaryVariant">#F2F2F2</color>
<color name="colorOnSecondary">#2BAD7D</color>
<!-- Background Colors -->
<color name="colorBackground">#FFFFFF</color>
<color name="colorOnBackground">#737373</color>
<!-- Surface Colors -->
<color name="colorSurface">#F2F2F2</color>
<color name="colorOnSurface">#737373</color>
<!-- Error Colors -->
<color name="colorError">#B00020</color>
<color name="colorOnError">#FFFFFF</color>
<!-- On-Surface Colors -->
<color name="colorHighEmphasis">#1B1B1B</color>
<color name="colorMediumEmphasis">#737373</color>
<color name="colorDisabled">#C5C5C5</color>
</resources>
activity_main.xml
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/AppBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/ToolBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="@string/app_name"
android:titleTextAppearance="@style/ToolbarTitleAppearance"/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/TabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/tabIndicator"
app:tabTextAppearance="@style/TabLayoutStyle"
app:tabTextColor="@color/tabTextColor"
app:tabSelectedTextColor="@color/tabSelectedTextColor"
app:tabGravity="fill"
app:tabInlineLabel="true"
app:tabIconTint="@drawable/x_tab_icon_opacity"
android:contentDescription="@string/homeTabLayout"/>
</com.google.android.material.appbar.AppBarLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:contentDescription="@string/homeFAB"
android:src="@drawable/x_icon_message"
tools:ignore="ImageContrastCheck"/>
也许你还没有将 Material 3 主题应用到你的布局中。
将 material 3 主题放入你的 activity_main: android:theme="@style/Material3Theme"
并在您的价值观/主题中使用您想要的颜色创建 Material3Theme:
<style name="Material3Theme" parent="Theme.Material3.Light.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/...</item>
<item name="colorPrimaryVariant">@color/...</item>
<item name="colorOnPrimary">@color/...</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/...</item>
<item name="colorSecondaryVariant">@color/...</item>
<item name="colorOnSecondary">@color/...</item>
<!-- Status bar color. -->
<!-- <item name="android:statusBarColor">?attr/colorPrimary</item>-->
<item name="android:statusBarColor">@color/...</item>
<!-- Customize your theme here. -->
</style>
这部分回答了你的问题。
对于
FloatingActionButton
黑色图标;它可以通过使用 app:tint="@null"
来获得预期的颜色应用来解决:
<com.google.android.material.floatingactionbutton.FloatingActionButton
app:tint="@null"
...
关于工具栏,不清楚您指的是工具栏上的哪些图标。