2015-12-18 3 views
1

Я начинаю андроид, я хочу создать status bar так же, как Toolbar и когда DrawerLayout открыт statusBar снова изменился так же, как DrawerLayout, как решить эту проблему. Я уже установлен в стиле parent="Theme.AppCompat.Light.NoActionBarКак управлять цветом строки состояния?

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" 
android:background="#ed9797" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/DrawerLayout"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/actionBarSize" 
    android:background="#e62e2e" 
    android:minHeight="?attr/actionBarSize" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp"> 
</android.support.v7.widget.Toolbar> 
</RelativeLayout> 

<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 


    <ListView 
     android:background="#46dfcd" 
     android:id="@+id/leftDrawer" 
     android:layout_width="250dp" 
     android:layout_height="match_parent" 
     android:text="Drawer page" 
     android:layout_gravity="start"/> 

ответ

1

Чтобы изменить статус бар цвета использовать setStatusBarColor(int color).

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

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)); 
0

Вы можете сделать так:

 @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
       Window window = getWindow(); 
       window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
       window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
       window.setStatusBarColor(getResources().getColor(
           R.color.your_color)); 
      } 
      setContentView(R.layout.your_layout); 

        //Your implementation 
    } 
+0

И, не могли бы вы сказать мне, как управлять цветом в строке состояния, когда ящик открыт , Цвет ящика отличается от основного экрана. – Vishal

1

Чтобы установить пользовательский цвет для строки состояния, используйте атрибут android:statusBarColor на вашу тему приложения под styles.xml как

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your status bar here. --> 
    <item name="android:statusBarColor">@color/red</item> 

    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
+0

Но если я создал другое действие с другой панелью инструментов – Vishal

+1

Этот параметр повлияет на все ваши действия в приложении – SachinS

+0

Но вторая панель инструментов отличается цветом – Vishal

Смежные вопросы