如何创建带有自定义颜色的文本和图标的白色工具栏?
How to create a white toolbar with text and icons in custom color?
我必须创建一个具有自定义背景颜色(接近白色)的工具栏,并且其上的所有元素(up-Button、menu-Buttons、标题等)都需要具有自定义颜色也是(它们都是相同的自定义颜色)。
App with white toolbar and dark text -> 答案 1 不起作用,因为它只更改状态栏,而不是工具栏,并且它仅在 API 级别 23 而不是 21 之后才有效。
我当前的 styles.xml 文件如下所示:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:buttonStyle">@style/AppTheme.Button</item>
<item name="actionBarTheme">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.Button" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/action_bar_background</item>
</style>
现在的情况我可以控制工具栏的背景颜色,但是我不能改变工具栏上元素的颜色。
我不想创建自定义工具栏,因为我不想更改任何行为。
<android.support.constraint.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="wrap_content"
android:background="@color/colorWhite">
<ImageView
android:id="@+id/ivBackPress"
style="@style/clickableStyle"
android:layout_width="@dimen/_30sdp"
android:layout_height="@dimen/_30sdp"
android:paddingStart="@dimen/_5sdp"
android:paddingLeft="@dimen/_5sdp"
android:paddingTop="@dimen/_8sdp"
android:paddingEnd="@dimen/_5sdp"
android:paddingRight="@dimen/_5sdp"
android:paddingBottom="@dimen/_8sdp"
android:rotationY="@integer/locale_mirror_flip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_back" />
<TextView
android:id="@+id/tvTitle"
style="@style/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/_8sdp"
android:text="Custom Toolbar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.50"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
我居然自己解决了。
我将 <item name="android:textColorPrimary">@color/toolbar_element_color</item>
添加到 AppTheme.ActionBar
并将 <item name="colorControlNormal">@color/toolbar_element_color</item>
添加到 AppTheme
。
我的 styles.xml 文件现在看起来像这样:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">@color/toolbar_element_color</item>
<item name="android:buttonStyle">@style/AppTheme.Button</item>
<item name="actionBarTheme">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.Button" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/action_bar_background</item>
<item name="android:textColorPrimary">@color/toolbar_element_color</item>
</style>
我必须创建一个具有自定义背景颜色(接近白色)的工具栏,并且其上的所有元素(up-Button、menu-Buttons、标题等)都需要具有自定义颜色也是(它们都是相同的自定义颜色)。
App with white toolbar and dark text -> 答案 1 不起作用,因为它只更改状态栏,而不是工具栏,并且它仅在 API 级别 23 而不是 21 之后才有效。
我当前的 styles.xml 文件如下所示:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:buttonStyle">@style/AppTheme.Button</item>
<item name="actionBarTheme">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.Button" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/action_bar_background</item>
</style>
现在的情况我可以控制工具栏的背景颜色,但是我不能改变工具栏上元素的颜色。
我不想创建自定义工具栏,因为我不想更改任何行为。
<android.support.constraint.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="wrap_content"
android:background="@color/colorWhite">
<ImageView
android:id="@+id/ivBackPress"
style="@style/clickableStyle"
android:layout_width="@dimen/_30sdp"
android:layout_height="@dimen/_30sdp"
android:paddingStart="@dimen/_5sdp"
android:paddingLeft="@dimen/_5sdp"
android:paddingTop="@dimen/_8sdp"
android:paddingEnd="@dimen/_5sdp"
android:paddingRight="@dimen/_5sdp"
android:paddingBottom="@dimen/_8sdp"
android:rotationY="@integer/locale_mirror_flip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_back" />
<TextView
android:id="@+id/tvTitle"
style="@style/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/_8sdp"
android:text="Custom Toolbar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.50"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
我居然自己解决了。
我将 <item name="android:textColorPrimary">@color/toolbar_element_color</item>
添加到 AppTheme.ActionBar
并将 <item name="colorControlNormal">@color/toolbar_element_color</item>
添加到 AppTheme
。
我的 styles.xml 文件现在看起来像这样:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">@color/toolbar_element_color</item>
<item name="android:buttonStyle">@style/AppTheme.Button</item>
<item name="actionBarTheme">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.Button" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/action_bar_background</item>
<item name="android:textColorPrimary">@color/toolbar_element_color</item>
</style>