2015-12-02 1 views
3

Как динамически установить цвет строки состояния для приложения, я использую пейджер представления при прокручивании (горизонтальном) цвета строки состояния и панели заголовка, а кнопка должна изменить цвет. так как мой заголовок кода и цвет кнопки отлично меняются, но проблема заключается в том, что цвет панели состояния имеет следующий цвет из списка массивов. как решить эту проблему, кто-нибудь может мне помочь. вот мой кодДинамически установить цвет строки состояния в android

private int[] colors = new int[]{0xffffd200, 0xff37beb7, 0xff00ccff, 0xff8585c1, 0xfff2a03c, 0xff2a80b9, 0xfff15972, 
     0xffe9776c, 0xff9dcc96,0xff76c069}; 

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

     int coloring = position % colors.length; 
     int new_color = colors[coloring]; 
     window.setStatusBarColor(new_color); 
     title_bar.setBackgroundColor(new_color); 
     set_share.setBackgroundColor(new_color); 

    } 
    else{ 

     int color = position % colors.length; 
     itemView.setBackgroundColor(colors[color]); 
     title_bar.setBackgroundColor(colors[color]); 
     set_share.setBackgroundColor(colors[color]); 
    } 
+0

Попробуйте это: [Как установить статус бар цвет динамически в Android] (http://stackoverflow.com/a/34072723/5475941) – Mohammad

ответ

4

Чтобы изменить цвет строки состояния, используйте setStatusBarColor (int color). Согласно javadoc, нам также нужно установить некоторые флаги в окне.

Работа фрагмент кода:

Window window = activity.getWindow(); 
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color)); 

Это взято из следующей ссылке: How to change status bar color to match app in Lollipop? [Android]

+0

настройка строки состояния цвет не проблема для меня, заголовка и Цвет кнопки отличается от цвета строки состояния, но я пропускаю один и тот же цвет, как решить эту проблему. я хочу, чтобы весь цвет был таким же – developer

+0

Для кнопки useButton11.setBackgroundColor (getResources(). getColor (R.color.example_color); , а для заголовка вы можете использовать два метода: 1. requestWindowFeature (Window.FEATURE_CUSTOM_TITLE); setContentView (R.layout.main) getWindow(). SetFeatureInt (Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle); 2 - если вы используете «ToolBar», вы можете настроить mToolbar.setBackground() – androgo

+0

чувак, я не знаю, я понял, что мой код работает нормально, но проблема - это пример {красный, зеленый, синий, желтый}, а прокрутка заголовка страницы и кнопка красного цвета, но строка состояния принимает (следующий цвет) зеленый цвет, я не знаю в чем проблема – developer

1

Когда я хотел установить строку состояния цвета, я использовал https://github.com/jgilfelt/SystemBarTint

Я использовал его как что:

public static void colorStatusBar(Window window, Activity activity) { 
    Log.v(Constants.LOG_TAG, "Start defining color bar status"); 
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {  
     window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
     SystemBarTintManager tintManager = new SystemBarTintManager(activity); 
     tintManager.setStatusBarTintEnabled(true); 

     tintManager.setTintColor(activity.getResources().getColor(R.color.colorPrimaryDark)); 
    } 
} 

Но будьте осторожны, если настройка цвета строки состояния возможна только в том случае, если ваше приложение работает на телефоне с API> = 19

3

Приходит к цвету строки состояния, вы можете добавлять его только на устройства с уровнем API более 21. К этим устройствам которые удовлетворяют этому условию, вы можете динамически изменять цвет StatusBar, как показано ниже.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     window.setStatusBarColor(getResources().getColor(R.color.Statusbar)); 
    } 
+0

это увеличивает мою панель инструментов как-то .. –