Làm cách nào để thay đổi màu của nút quay lại Thanh công cụ trong Android?


100

Tôi không thể thay đổi màu của nút quay lại. Tôi đang sử dụng thiết kế material design thanh công cụ. Trong ứng dụng của tôi, tôi đang áp dụng nền đen của thanh công cụ nhưng thiết kế mặt sau có màu đen theo mặc định, đó là lý do tại sao tôi chỉ muốn thay đổi màu sắc của nút quay lại này. Xin hãy cho tôi giải pháp.

Cảm ơn bạn


3
<style name = "MyMaterialTheme.Base" parent = "Theme.AppCompat.Light.DarkActionBar">
Nazima Kauser MMF

Câu trả lời:


79

sử dụng phong cách này

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/back_button_image</item>
</style>

tôi đang sử dụng phong cách này. những gì tôi phải thay đổi trong phong cách này?
Nazima Kauser MMF

bạn có thể sử dụng tập tin hình ảnh tùy chỉnh cho trở lại button.just gọi nó trong `@ drawable / your_image'
Akhil Jayakumar

Đây là cách tốt nhất để làm điều đó. Bởi vì việc sử dụng R.drawable.abc_ic_ab_back_mtrl_am_alpha để thay đổi màu sắc có rủi ro, vì phiên bản hỗ trợ thay đổi tài nguyên có thể vẽ thường xuyên.
Mostafa Imran

196

Bạn có thể thêm một kiểu vào styles.xml của mình,

<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
  <!-- Customize color of navigation drawer icon and back arrow --> 
  <item name="colorControlNormal">@color/toolbar_color_control_normal</item>
</style>

và thêm cái này làm chủ đề vào thanh công cụ của bạn trong toolbar layout.xml bằng app: theme , hãy kiểm tra bên dưới

<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:theme="@style/ToolbarTheme" >
</android.support.v7.widget.Toolbar>

4
Làm việc như một sự quyến rũ, và nghe có vẻ thích hợp nhất.
Vijay Kumar Kanta

1
Em yêu. Nó hoạt động. Bây giờ tôi chỉ cần một cái gì đó tương đương cho iOS. Cảm ơn!
Ernesto

Sẽ tốt hơn nếu gọi nó là ToolbarTheme dù
Leo Droidcoder

1
Đối với tôi <style name = "ToolbarTheme" parent = "@ style / Theme.AppCompat.NoActionBar"> đã hoạt động. Chủ đề ứng dụng chính của tôi là <style name = "AppTheme" parent = "Theme.AppCompat.NoActionBar">
Yar,

3
Nó đã làm việc. Điều này phù hợp hơn câu trả lời được chấp nhận.
Domenico

86

Đây là cách đơn giản nhất để đạt được Chủ đề sáng và tối cho app:themeThanh công cụ. Bạn phải thay đổi giá trị của thẻ Thanh công cụ

  • Đối với Tiêu đề Thanh công cụ Màu đenMũi tên Lên màu Đen , thanh công cụ của bạn phải triển khai chủ đề sau:

app: theme = "@ style / ThemeOverlay.AppCompat.Light"

Tiêu đề Thanh công cụ màu đen và Mũi tên Lên

  • Đối với Tiêu đề Thanh công cụ Màu trắngMũi tên Lên màu Trắng , thanh công cụ của bạn phải triển khai chủ đề sau:

app: theme = "@ style / ThemeOverlay.AppCompat"

Tiêu đề Thanh công cụ màu trắng và Mũi tên Lên


66
Đối với Thanh công cụ trắng Tiêu đề và trắng mũi tên Up, sử dụng chủ đề sau: android: theme = "@ style / ThemeOverlay.AppCompat.Dark.ActionBar"
Amol Patil

Tôi đang cố gắng hiểu, tại sao nó lại có tên là ThemeOverlay? Tại sao tôi không thể chỉ sử dụng Theme.AppCompat.Dark.ActionBar đơn giản ở đây?
Gaket

@ ch3tanz Bạn đang sử dụng ActionBar hay Thanh công cụ? Tại sao bạn sử dụng kiểu ActionBar?
f470071

@ f470071 Tôi đang sử dụng Thanh công cụ. Nó chỉ là phong cách sẽ hỗ trợ trong tất cả các phiên bản. Bạn có thể sử dụng kiểu thiết kế Material Design nếu ứng dụng của bạn đang nhắm mục tiêu phía trên Lollipop.
ch3tanz

Theme.AppCompat.Light.DarkActionBartrong trường hợp của tôi.
Evi Song

30

Đối với Tiêu đề Thanh công cụ màu trắng và Mũi tên Lên màu trắng, hãy sử dụng chủ đề sau:

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

Cảm ơn rất nhiều, trên tất cả các giải pháp chỉ nó hoạt động cho tôi.
Md Juyel Rana

20

Dùng cái này:

<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="colorControlNormal">@color/white</item> 
</style>

5
Điều này nên được chấp nhận. Mọi câu trả lời ở đây chỉ là thay thế biểu tượng, không phải màu sắc.
Michał Jabłoński

12

Thử đi,

final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
upArrow.setColorFilter(getResources().getColor(R.color.grey), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);

6

Bạn không cần phải thay đổi phong cách cho nó. Sau khi thiết lập thanh công cụ của bạn làm thanh tác vụ, Bạn có thể viết mã như thế này

android.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
android.getSupportActionBar().setHomeAsUpIndicator(R.drawable.back);
//here back is your drawable image

Nhưng bạn không thể thay đổi màu của mũi tên quay lại bằng phương pháp này


6

Nếu bạn muốn nút quay lại màu trắng (←) và tiêu đề thanh công cụ màu trắng, hãy làm theo điều này:

<android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        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/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    </android.support.design.widget.AppBarLayout>

Thay đổi chủ đề từ Darkthành Lightnếu bạn muốn nút quay lại màu đen (←) và tiêu đề thanh công cụ màu đen.


5

Bạn có thể sử dụng biểu tượng của riêng mình bằng cách sử dụng app:navigationIconvà cho màu tiêu đềapp:titleTextColor

Thí dụ:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/colorPrimary"
        app:navigationIcon="@drawable/ic_arrow_back_white_24dp"
        app:titleTextColor="@color/white" />

Điều này phù hợp với tôi, chỉ cần đặt bất kỳ biểu tượng nào bằng dòng nàyapp:navigationIcon="@drawable/ic_back_black"
Abhishek

glade nó đã giúp.
Mohamed Nageh

4

Tôi nghĩ rằng nếu chủ đề sẽ được tạo ra một số vấn đề nhưng mũi tên màu đen được đặt động của nó. Vì vậy, tôi đề xuất hãy thử cái này.

Drawable backArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
backArrow.setColorFilter(getResources().getColor(R.color.md_grey_900), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(backArrow);

2
Giải pháp của bạn khác với @Parth Bhayani như thế nào?
CoolMind

4

Chỉ cần sử dụng MaterialToolbarvà ghi đè các màu mặc định:

    <com.google.android.material.appbar.MaterialToolbar
        style="@style/Widget.MaterialComponents.Toolbar.Primary"
        android:theme="@style/MyThemeOverlay_Toolbar"
        ..>

với:

  <style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- color used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/...</item>
  </style>

nhập mô tả hình ảnh ở đây

Nếu bạn đang sử dụng androidx.appcompat.widget.Toolbarhoặc MaterialToolbar với kiểu mặc định ( Widget.MaterialComponents.Toolbar), bạn có thể sử dụng:

<androidx.appcompat.widget.Toolbar
    android:theme="@style/MyThemeOverlay_Toolbar2"

với:

  <style name="MyThemeOverlay_Toolbar2" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- This attributes is used by title -->
    <item name="android:textColorPrimary">@color/white</item>

    <!-- This attributes is used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/secondaryColor</item>
  </style>

3

Tôi đang sử dụng <style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar>chủ đề trong ứng dụng Android của mình và trong chủ đề NoActionBar,colorControlNormal tính được sử dụng để thay đổi màu của biểu tượng điều hướng mặc định Mũi tên nút quay lại trong thanh công cụ của tôi

styles.xml

<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="colorControlNormal">@color/your_color</item> 
</style>

2

Đơn giản và không phải lo lắng

 <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <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/colorPrimary"
                app:titleTextColor="@color/white"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.AppBarLayout>

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

    </android.support.design.widget.CoordinatorLayout>

2

Tôi đã làm theo cách này bằng cách sử dụng thư viện Thành phần Vật liệu:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowToggle</item>
</style>

<style name="AppTheme.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="color">@android:color/white</item>
</style>

điều này hoạt động: nó cho phép bạn thay đổi màu sắc của biểu tượng menu bánh hamburger.
lnaie

1

Bạn có thể thêm mã này vào lớp java của mình. Nhưng bạn phải tạo nội dung vectơ trước đó, vì vậy bạn có thể tùy chỉnh mũi tên quay lại của mình.

actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_black_24dp);

0

Để tạo kiểu cho Thanh công cụ trên Android 21+ thì hơi khác một chút.

<style name="DarkTheme.v21" parent="DarkTheme.v19">
        <!-- toolbar background color -->
        <item name="android:navigationBarColor">@color/color_primary_blue_dark</item>
        <!-- toolbar back button color -->
        <item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation.Tinted</item>
    </style>

    <style name="Toolbar.Button.Navigation.Tinted" parent="Widget.AppCompat.Toolbar.Button.Navigation">
        <item name="tint">@color/color_white</item>
    </style>

-1

Nếu bạn muốn hệ thống trở lại màu trắng thì bạn có thể sử dụng mã này

<com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar_notification"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:contentInsetLeft="0dp"
            app:contentInsetStart="0dp"
            app:contentInsetStartWithNavigation="0dp">

            <include layout="@layout/action_bar_notification" />
        </androidx.appcompat.widget.Toolbar>
    </com.google.android.material.appbar.AppBarLayout>

Lưu ý: - android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" là chìa khóa

Quá trình dán nằm trong hoạt động của bạn, nơi bạn muốn hiển thị nút quay lại trên thanh tác vụ

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_notification);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
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.