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?
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?
Câu trả lời:
Với Android M (api cấp 23), bạn có thể đạt được điều này từ chủ đề có android:windowLightStatusBar
thuộ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);
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 colorPrimary
màu trắng hoặc theo chương trình:
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
như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
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
}
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}.
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()
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.
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>