2015-05-26 39 views
14

Tôi đang cố gắng đặt màu văn bản trên thanh trạng thái trong Android v21, nhưng tôi không thấy phương thức API cho nó. Dưới đây là những gì tôi có cho đến nay cho nềnAndroid Lollipop Đặt thanh trạng thái Màu văn bản

MyActivity.java> onCreate:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Window window = getWindow(); 
     window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

     window.setStatusBarColor(getResources().getColor(R.color.white)); 

    } 

văn bản Rõ ràng trắng trên nền trắng sẽ không hoạt động. Tôi đang tìm một cái gì đó giống như

window.setStatusBarTextColor(getResources().getColor(R.color.orange)); 
+0

tôi không nghĩ rằng, không có phương pháp như setStatusBarTextColor trong Android 5.0 –

+0

Không giống như các trang web diễn đàn, chúng tôi không sử dụng "Cảm ơn", hay "Bất kỳ sự giúp đỡ đánh giá cao", hoặc chữ ký trên [để]. Xem "[Nên 'Xin chào', 'cảm ơn', dòng giới thiệu và lời chào được xóa khỏi bài đăng không?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

+0

Thay đổi màu văn bản thanh trạng thái Lollipop là không thể, hoặc bạn đặt nền thanh trạng thái thành mờ mà kết quả là nền 4000 đảm bảo tính dễ đọc sufficent hoặc bạn đặt nó theo cách thủ công cho một số màu (gợi ý: chính tối, từ khóa * tối *) sẽ đảm bảo độ tương phản đủ với nền trước màu trắng Bây giờ chúng ta có thể tự thay đổi màu từ màu đen hoặc bất kỳ màu sắc ngẫu nhiên nào mà Samsung có thể sử dụng, không đủ sao? –

Trả lời

0

Android 5.0

chúng tôi có thể thay đổi chỉ màu trên thanh trạng thái không tình trạng văn bản thanh màu.

không có phương pháp như

setStatusBarTextColor(getResources().getColor(R.color.orange)); 

Nói tóm lại, đó là không thể thực hiện trên Android 5.0. Kiểm tra answer

+0

Có thể từ API 23 trở lên, hãy kiểm tra câu trả lời dưới đây bởi Sunita –

26

Bạn không thể thiết lập màu chữ trên thanh trạng thái bằng cách xác định bất kỳ màu sắc rõ ràng

Nhưng bạn có thể thử bên dưới thay thế được thêm trong API 23,

Bạn có thể sử dụng "android: windowLightStatusBar" thuộc tính theo hai cách

  • "android: windowLightStatusBar" = true, thanh trạng thái màu sắc văn bản sẽ được tương thích (màu xám) khi thanh trạng thái màu sắc là ánh sáng
  • "android: windowLightStatusBar" = false, thanh trạng thái màu sắc văn bản sẽ được tương thích (trắng) khi thanh trạng thái màu sắc là đen
<style name="statusBarStyle" parent="@android:style/Theme.DeviceDefault.Light"> 
     <item name="android:statusBarColor">@color/status_bar_color</item> 
     <item name="android:windowLightStatusBar">false</item> 
</style> 

Bạn có thể kiểm tra trên api vào bên dưới liên kết - https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar

+2

Tuyệt vời. không biết điều đó. Làm việc như một say mê. – Tobliug

4

Bạn cũng có thể thực hiện việc này khi chạy. Đây là một ví dụ cho Mono.Android sử dụng Cờ SystemUiVisibility. Bạn phải thực hiện một số thao tác bitwise để thay đổi cờ. Ứng dụng của bạn phải được đặt để nhắm mục tiêu API 23 trở lên để biên dịch với cờ này.

//Android 6.0 introduced the ability to set a light colored text on the status bar 
//MyActivity needs to be changed to your activity 

if(Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M) 
{ 
    int newUiVisibility = (int)MyActivity.Window.DecorView.SystemUiVisibility; 

    if(state == StatusBarState.Light) 
    { 
     //Dark Text to show up on your light status bar 
     newUiVisibility |= (int)Android.Views.SystemUiFlags.LightStatusBar; 
    } 
    else if(state == StatusBarState.Dark) 
    { 
     //Light Text to show up on your dark status bar 
     newUiVisibility &= ~(int)Android.Views.SystemUiFlags.LightStatusBar; 
    } 

    MyActivity.Window.DecorView.SystemUiVisibility = (Android.Views.StatusBarVisibility)newUiVisibility; 
} 

public enum StatusBarState 
{ 
    Light, 
    Dark 
} 
+0

Cảm ơn bạn đã trả lời câu trả lời này –

5

Đây là bản thực hiện Java của câu trả lời Gandalf458.

/** Changes the System Bar Theme. */ 
@RequiresApi(api = Build.VERSION_CODES.M) 
public static final void setSystemBarTheme(final Activity pActivity, final boolean pIsDark) { 
    // Fetch the current flags. 
    final int lFlags = pActivity.getWindow().getDecorView().getSystemUiVisibility(); 
    // Update the SystemUiVisibility dependening on whether we want a Light or Dark theme. 
    pActivity.getWindow().getDecorView().setSystemUiVisibility(pIsDark ? (lFlags & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) : (lFlags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)); 
} 
Các vấn đề liên quan