colorControlNormal 不设置工具栏后退箭头颜色
colorControlNormal not setting toolbar back arrow color
我正在尝试将工具栏的后退箭头颜色更改为紫色,但我为自定义工具栏主题的 colorControlNormal 属性设置的颜色不起作用。工具栏应该是紫色的,但它仍然是白色的。
我检查了整个布局 xml 和应用程序清单,看看我的工具栏主题是否在某处被覆盖,但我没有看到这一点。
有什么问题?
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentTransitions">true</item>
<item name="colorPrimary">@color/silver</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/roar_purple</item>
<item name="actionMenuTextColor">@color/white</item>
<item name="actionMenuTextAppearance">@style/customActionBar</item>
<item name="android:textColorPrimary">@color/black_87_two</item>
<item name="android:colorAccent">@color/roar_purple</item>
</style>
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- Customize color of navigation drawer icon and back arrow -->
<item name="colorControlNormal">@color/roar_purple</item>
<item name="android:homeAsUpIndicator">@drawable/ic_chevron_left_white_48dp</item>
</style>
...
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/phoneNumEntryAppBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ToolbarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
...
AndroidManifest.xml
<activity
android:name=".LoginSignupEnterPhoneActivity"
android:label="@string/title_activity_login_enter_phone_num"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:parentActivityName="com.roarforgood.roar.PrivacyDisclaimerActivity"
android:theme="@style/AppTheme">
</activity>
文件名 ic_chevron_left_white_48dp
看起来像 Android Studio 在您使用 New -> Image Asset
或 New -> Vector Asset
菜单选项时创建的文件。
如果您使用 Image Asset
,请删除所有文件并从 Vector Asset
重新开始。如果您一开始就使用 Vector Asset
,请忽略此位。
当我生成白色 V 形矢量时,它看起来像这样:
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:tint="#FFFFFF"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
</vector>
要解决此问题,您需要做两件事:
- 从
<vector>
标签中删除 android:tint
属性
- 将
<path>
标签中的 android:fillColor
属性更改为 ?attr/colorControlNormal
这应该留给你:
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
</vector>
当我执行此操作并使用您发布的样式时,我在工具栏中正确地看到了我的 colorControlNormal
人字形。
通知:
<item name="colorControlNormal">@color/roar_purple</item>
<item name="android:homeAsUpIndicator">@drawable/ic_chevron_left_white_48dp</item> //delete this line
你只想显示后退箭头,所以就这样做:
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
我正在尝试将工具栏的后退箭头颜色更改为紫色,但我为自定义工具栏主题的 colorControlNormal 属性设置的颜色不起作用。工具栏应该是紫色的,但它仍然是白色的。
我检查了整个布局 xml 和应用程序清单,看看我的工具栏主题是否在某处被覆盖,但我没有看到这一点。
有什么问题?
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentTransitions">true</item>
<item name="colorPrimary">@color/silver</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/roar_purple</item>
<item name="actionMenuTextColor">@color/white</item>
<item name="actionMenuTextAppearance">@style/customActionBar</item>
<item name="android:textColorPrimary">@color/black_87_two</item>
<item name="android:colorAccent">@color/roar_purple</item>
</style>
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- Customize color of navigation drawer icon and back arrow -->
<item name="colorControlNormal">@color/roar_purple</item>
<item name="android:homeAsUpIndicator">@drawable/ic_chevron_left_white_48dp</item>
</style>
...
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/phoneNumEntryAppBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ToolbarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
...
AndroidManifest.xml
<activity
android:name=".LoginSignupEnterPhoneActivity"
android:label="@string/title_activity_login_enter_phone_num"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:parentActivityName="com.roarforgood.roar.PrivacyDisclaimerActivity"
android:theme="@style/AppTheme">
</activity>
文件名 ic_chevron_left_white_48dp
看起来像 Android Studio 在您使用 New -> Image Asset
或 New -> Vector Asset
菜单选项时创建的文件。
如果您使用 Image Asset
,请删除所有文件并从 Vector Asset
重新开始。如果您一开始就使用 Vector Asset
,请忽略此位。
当我生成白色 V 形矢量时,它看起来像这样:
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:tint="#FFFFFF"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
</vector>
要解决此问题,您需要做两件事:
- 从
<vector>
标签中删除android:tint
属性 - 将
<path>
标签中的android:fillColor
属性更改为?attr/colorControlNormal
这应该留给你:
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorControlNormal"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
</vector>
当我执行此操作并使用您发布的样式时,我在工具栏中正确地看到了我的 colorControlNormal
人字形。
通知:
<item name="colorControlNormal">@color/roar_purple</item>
<item name="android:homeAsUpIndicator">@drawable/ic_chevron_left_white_48dp</item> //delete this line
你只想显示后退箭头,所以就这样做:
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);