Làm cách nào để làm cho thanh trạng thái có màu trắng với các biểu tượng màu đen?


83

Tôi muốn thay đổi màu của thanh trạng thái cho ứng dụng của mình để nó có màu trắng với các biểu tượng màu đen (thay vì màu đen mặc định với các biểu tượng màu trắng). Có cách nào để làm điều này?


Thay đổi chủ đề mặc định của bạn
Rohit5k2

tôi nên thay đổi chủ đề nào sẽ thay đổi các biểu tượng trên thanh thông báo thành màu đen?
Jon

Sử dụng chủ đề tùy chỉnh. Để bắt đầu, hãy xem stackoverflow.com/questions/8024706/…
Rohit5k2

vậy đối với các ứng dụng tuân theo nguyên tắc android và có biểu tượng thông báo màu trắng thì sao, bạn mong người dùng nhìn thấy chúng khi họ ở trong ứng dụng của bạn thì sao?
tyczj

2
nhưng bạn không thể thay đổi màu sắc của các nguồn tài nguyên các ứng dụng khác, trên thực tế kẹo làm cho tất cả các biểu tượng màu trắng không có vấn đề gì
tyczj

Câu trả lời:


125

Với Android M (api cấp 23), bạn có thể đạt được điều này từ chủ đề có android:windowLightStatusBarthuộc tính.

Biên tập :

Cũng như Pdroid đã đề cập, điều này cũng có thể đạt được theo chương trình:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 

2
tôi có thể đặt nó theo chương trình không?
busylee

@busylee Tôi đoán bạn có thể tạo ra một con của chủ đề của bạn và thay đổi nó ở đó và áp dụng với activity.getTheme.setTo (Theme khác)
bugraoral

Xin chào @wrecker, tôi gặp vấn đề tương tự với biểu tượng thông báo ứng dụng của mình. Tôi đã thêm android: windowLightStatusBar = true vào chủ đề của mình và tôi đang thử nghiệm nó trong Android M. nhưng biểu tượng thông báo màu trắng không chuyển sang màu xám khi tôi thay đổi chủ đề bằng ứng dụng trình khởi chạy của bên thứ ba (Nova Launcher). Tôi đã thử tất cả các cách có thể nhưng vẫn chưa khắc phục được. Nếu bạn có thể giúp tôi, nó sẽ rất biết ơn.
Sujit

1
@busylee Có, bạn có thể đặt nó bất kỳ lúc nào bằng cách sử dụng phương pháp sau: View.setSystemUiVisibility (View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); Nó nên được thêm vào câu trả lời
Pdroid

6
Nếu tôi muốn sử dụng trong phiên bản 22 hoặc trước đó thì sao?
Dhara Patel

45

Có thể tạo thanh trạng thái màu trắng với các biểu tượng màu xám, ví dụ theo cách này cho SDK> = 23 (xem tài liệu ):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowLightStatusBar">true</item>
</style>

trong styles.xml của bạn và đặt thành colorPrimarymàu trắng hoặc theo chương trình:

getWindow().setStatusBarColor(Color.WHITE);

2
Nó đã được bổ sung trong API 23, chứ không phải 21 - xem tài liệu
Vadim Kotov

hey @VadimKotov thực sự tôi đã viết SDK >= 23nhưng @being_sohelkhan đối với một số lý do đã thay đổi nội dung câu trả lời ban đầu của tôi ... stackoverflow.com/posts/46897243/revisions
Rammgarot

15

Vừa được thêm vào hoạt động của tôi trên Kotlin:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                window.statusBarColor = Color.WHITE
            }

7

chỉ cần thêm cái này vào phong cách của bạn

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>

đặt android: windowDrawsSystemBarBackgrounds thành true * . Đây là một lá cờ có mô tả được đưa ra bên dưới:

Cờ cho biết Cửa sổ này có chịu trách nhiệm vẽ nền cho các thanh hệ thống hay không. Nếu đúng và cửa sổ không nổi, các thanh hệ thống sẽ được vẽ với nền trong suốt và các khu vực tương ứng trong cửa sổ này được tô bằng các màu được chỉ định trong {@link android.R.attr # statusBarColor} và {@link android.R .attr # navigationBarColor}. Tương ứng với {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}.


1

Bạn có thể sử dụng nó theo cách này trong Kotlin

 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

Hãy nhớ gọi nó onCreate()trướcsetContentView()


0

Không có cách nào như vậy trừ khi bạn có quyền kiểm soát toàn bộ rom để tùy chỉnh điều đó theo cách thủ công. Những gì tôi khuyên bạn nên làm là, sử dụng màu xám nhạt cho màu thanh trạng thái thông qua chủ đề của bạn giống như google drive.

Chỉnh sửa: vui lòng tham khảo câu trả lời @Wrekcker vì điều này đã thay đổi trong android M.


1
Nó được hỗ trợ trong Android M
Amir Dora.

-1

Tôi gặp vấn đề tương tự.

Tôi nhận thấy rằng khi tôi sử dụng bố cục bình thường như RelativeLayout, nó không hoạt động. Nhưng khi tôi chuyển sang nó từ thư viện hỗ trợ như CordinatorLayout, nó cuối cùng đã bắt đầu hoạt động. Thử đi.

  <?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:fitsSystemWindows="true"
        tools:context=".Activities.Activity">


        <android.support.v7.widget.Toolbar
            android:id="@+id/tb_activity"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />


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

<********* DƯỚI ĐÂY CÁC PHÂN TÍCH KHÁC ************>

phong cách

<resources>
<!-- 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>
</style>

<style name="AppTheme.NoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

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

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

Và trong bản kê khai

<activity
            android:name=".Activities.MyActivity"
            android:label="Activity"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>
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.