如何创建带有自定义颜色的文本和图标的白色工具栏?

时间:2019-09-04 12:15:34

标签: android android-toolbar

我必须创建一个具有自定义背景色(接近白色)的工具栏,并且其上的所有元素(向上按钮,菜单按钮,标题等)也需要具有自定义颜色(所有这些相同的自定义颜色。

App with white toolbar and dark text->答案1不起作用,因为它仅更改StatusBar,而不更改工具栏,并且仅在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>

现在,我可以控制工具栏的背景颜色,但不能更改工具栏上元素的颜色。

我不想创建自定义工具栏,因为我不想更改任何行为。

2 个答案:

答案 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>

答案 1 :(得分:-1)

<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" />