Cách đặt văn bản Thanh công cụ và màu mũi tên quay lại


116

Nền thanh công cụ có màu tối, tôi muốn văn bản và mũi tên quay lại có màu trắng. Tôi đã thử làm theo, nhưng nó không hoạt động.

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/blue_darker</item>
        <item name="colorAccent">@color/purple</item>
        <!-- item name="android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere. 
        <item name="android:textColorSecondary">@color/white</item>
        <item name="android:toolbarStyle">@style/AppTheme.ToolbarStyle</item>
        <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item>

        <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>

    </style>

    <style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
        <!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>-->
        <item name="android:textColor">@color/white</item> // doesn't work
        <item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item>
    </style>

10
Cố gắng thêm app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"vào của bạn <android.support.v7.widget.Toolbar>; mũi tên quay lại và văn bản sẽ có màu trắng, như @yubarajpoudel đã nói.
1111161171159459134 21/02/16

Câu trả lời:


153

Rất có thể bạn đang mở rộng từ sai cha mẹ. Nếu không, bạn có thể thử thêm trực tiếp stylevào toolbarbố cục, nếu bạn muốn ghi đè cài đặt của chủ đề.

Trong bố cục thanh công cụ của bạn:

 <android.support.v7.widget.Toolbar
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      android:minHeight="?attr/actionBarSize"
      app:theme="@style/ToolBarStyle"
      app:popupTheme="@style/ToolBarPopupStyle"
      android:background="@color/actionbar_color" />

Theo phong cách của bạn:

 <!-- ToolBar -->
  <style name="ToolBarStyle" parent="Theme.AppCompat">
      <item name="android:textColorPrimary">@android:color/white</item>
      <item name="android:textColorSecondary">@android:color/white</item>
      <item name="actionMenuTextColor">@android:color/white</item>      
      <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
      <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
 </style>

5
đưa ra lỗi khi thêm phong cách này để styles.xmltập tin
Gopal Singh Sirvi

1
bạn không cần phần drawerArrowStyle để làm trả lời câu hỏi
luckyhandler

124

Thêm phần sau dưới dạng toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="?attr/colorPrimary">

</android.support.v7.widget.Toolbar>

Sau đó, trong bố cục nơi bạn cần

<include layout="@layout/toolbar"/>

Thưởng thức


10
Vâng, hoạt động! Đặc biệt app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar".
1111161171159459134 21/02/16

1
Nên<include layout="@layout/toolbar"/>
Tim

63

Hoạt động bên trong, bạn có thể sử dụng

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));

Nếu bạn thích chọn xml cho cả màu tiêu đề và mũi tên quay lại màu trắng, chỉ cần thêm kiểu này trong style.xml.

 <style name="ToolBarStyle" parent="Theme.AppCompat">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/white</item>
</style>

Và thanh công cụ trông giống như:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:theme="@style/ToolBarStyle"
        android:layout_height="?attr/actionBarSize"
  />

1
NHỮNG CÔNG VIỆC NÀY! Vì vậy, nhiều câu trả lời ngẫu nhiên - Tôi nghĩ rằng điều cần lưu ý là công trình này cho: android.support.v7.widget.Toolbar lồng bên trong: android.support.design.widget.AppBarLayout Rất cám ơn
Sagar Patel

1
giải pháp java không thay đổi màu mũi tên
java-love

19

Giải pháp này có thể dễ dàng hơn. Nhưng nó yêu cầu phiên bản API cao hơn (23). chỉ cần thêm mã này vào thanh công cụ của bạn trong XML:

<Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/actionBarSize"
    android:background="?android:attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:titleTextColor="#ffffffff" />

@VygintasB true
Tom Esendam

1
Không cần thiết đặt android: titleTextColor = "# ffffffff", chỉ cần android: theme = "@ style / ThemeOverlay.AppCompat.Dark.ActionBar" và ứng dụng: popupTheme = "@ style / ThemeOverlay.AppCompat.Light"
Almeida

16

Nếu bạn sử dụng AndroidX(kể từ tháng 7 năm 2019), bạn có thể thêm những thứ sau:

<androidx.appcompat.widget.Toolbar
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  app:layout_collapseMode="pin"
  app:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
  app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"/>

GHI CHÚ! Điều này đã được thử nghiệm để hoạt động nếu của bạn Toolbarđược đặt trực tiếp bên trong AppBarLayoutnhưng không bên trongCollapsingToolbarLayout


9
<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimaryDark"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>

Đây là câu trả lời nếu bạn đang gặp phải appbarlayout. Cảm ơn!
Nuhman

8

phương pháp này đã giúp tôi.

<style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primaryDark</item>
        <item name="colorAccent">@color/highlightRed</item>
        <item name="actionBarTheme">@style/ToolbarStyle</item>
</style>

<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar">
        <item name="android:textColorPrimary">@color/white</item>
</style>

6
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/actionBar"
app:titleTextAppearance="@style/ToolbarTitleText"
app:theme="@style/ToolBarStyle">

<TextView
    android:id="@+id/title"
    style="@style/ToolbarTitleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="hh"/>

<!-- ToolBar -->
<style name="ToolBarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="actionMenuTextColor">#ff63BBF7</item>
</style>

sử dụng ứng dụng: theme = "@ style / ToolBarStyle"

Nguồn tham khảo : http: //blog.csdn.net/wyyl1/article/details/45972371


1
Vui lòng giải thích câu trả lời của bạn, chỉ là mã đăng không rõ ràng lắm để trả lời một câu hỏi.
SuperBiasedM

3

Hãy thử điều này trên tệp XML của bạn

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        app:titleTextColor="@color/colorAccent"
        app:theme="@style/ToolbarColoredBackArrow"
        app:subtitleTextColor="@color/colorAccent"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

Và thêm vào đây là tệp color.xml của bạn

    <color name="colorAccent">YOUR_COLOR</color>

1
Xin vui lòng bạn có thể chia sẻ với chúng tôi những gì là trong ứng dụng: theme = "@ style / ToolbarColoredBackArrow"
Simon

3

Thêm dòng này vào Toolbar. 100% làm việc

android:theme="@style/Theme.AppCompat.Light.DarkActionBar"

1

Hãy thử nhiều phương pháp, trong phiên bản thấp của API, một phương pháp khả thi là <item name="actionMenuTextColor">@color/your_color</item>và không sử dụng không gian tên Android

ps:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <!-- change the textColor -->
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>

1

Tôi đã sử dụng trình giữ chỗ nên chỉ cần làm theo, vì bạn có thể muốn vẫn giữ tính kế thừa từ kiểu ban đầu.

Trước

<android.support.v7.widget.Toolbar
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/{{originalBaseStyle}}"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

Sau:

styles.xml

<style name="{{yourToolbarStyle}}" parent="{{originalBaseStyle}}">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="actionMenuTextColor">@android:color/white</item>
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

vì thế

<android.support.v7.widget.Toolbar
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/{{yourToolbarStyle}}"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

1

Nếu chúng tôi tuân theo mẫu hoạt động được tạo bởi Android Studios, thì đó là AppBarLayout cần có chủ đề Android của AppBarOverlay, mà bạn nên xác định trong styles.xml của mình. Điều đó sẽ cung cấp cho bạn văn bản màu của toobar / actionbar màu trắng.

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">  ...

Trong styles.xml, hãy đảm bảo rằng những điều sau tồn tại:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

1

Cách tiếp cận này phù hợp với tôi khi sử dụng thư viện Thành phần Vật liệu:

Trong styles.xml:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Your styles here -->

    <item name="toolbarStyle">@style/AppTheme.Toolbar</item>
</style>

<style name="AppTheme.Toolbar" parent="Widget.MaterialComponents.Toolbar">
    <item name="titleTextColor">@android:color/white</item>
</style>

Phỏng theo câu trả lời này: https://stackoverflow.com/a/48205577/238753


0

Để thay đổi biểu tượng mặt sau của Thanh công cụ có thể vẽ được, bạn có thể sử dụng cách này:
Thêm <item name="toolbarStyle">@style/ToolbarStyle</item>vào Chủ đề của bạn.
Và đây là ToolbarStylechính nó:

<style name="ToolbarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="navigationIcon">@drawable/ic_up_indicator</item>
</style>

0

Nếu sử dụng phiên bản mới nhất của Android Studio 3.0 và tạo các lớp Hoạt động của bạn, các tệp kiểu trong tệp của bạn sẽ thay đổi điều này:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

Về điều này:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.