3

Я совершенно новый в мире android, и я не уверен, как правильно изменить панель действий.Состояние бара не меняется цвет и эффективные действия ActionBar

В моем случае основное действие имеет FrameLayout, где я переключаюсь между фрагментами с помощью навигационного ящика.

Я видел, что есть несколько способов изменить параметры панели действий, но я не совсем уверен, какой из них лучший. Что я использую до сих пор, чтобы изменить ActionBar (и фрагмент) заключается в следующем:

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
    public void displayView(int position) { 
     // update the main content by replacing fragment 
     Fragment fragment = null; 
     ImageView imageView = new ImageView(getSupportActionBar().getThemedContext()); 
     imageView.setScaleType(ImageView.ScaleType.CENTER); 
     switch (position) { 
      case 0: 
       imageView.setImageResource(R.drawable.ic_launcher); 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.main_menu))); 
       fragment = new Seccion1MainMenu(); 
       break; 
      case 1: 
       imageView.setImageResource(R.drawable.ic_security); 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.security_menu))); 
       fragment = new Seccion2Security(); 
       break; 
      case 2: 
       imageView.setImageResource(R.drawable.ic_light); 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.light_menu))); 
       fragment = new Seccion3(); 
       break; 
      case 3: 
       imageView.setImageResource(R.drawable.ic_fan); 
       getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.fan_menu))); 
       fragment = new Seccion4(); 
       break; 

      default: 
       imageView.setImageResource(R.drawable.ic_launcher); 
       break; 
     } 
     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment).commit(); 

      // update selected item and title, then close the drawer 
      mDrawerList.setItemChecked(position, true); 
      mDrawerList.setSelection(position); 
      getSupportActionBar().setCustomView(imageView); 
      setTitle(navMenuTitles[position]); 
      mDrawerLayout.closeDrawer(mDrawerList); 
     } else { 
      // error in creating fragment 
      Log.e("Alvaro", "MainActivity - Error cuando se creo el fragment"); 
     } 

Как вы можете видеть в коде, изменить цвет панели действий, названия и изображения. Является ли это подходящим способом изменить изменение содержимого или я заставляю машину?

Что мне не удается сделать, это автоматически изменить цвет строки состояния. Я прочитал несколько сообщений, и я не смог этого добиться. Одним из предлагаемых решений было добавление этой строки:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

Но я не получил никакого результата. Есть ли у вас какие-либо идеи? Спасибо за вашу помощь :)

+0

для строки состояния вы используете эмулятор или реальное устройство? –

+0

Я использую настоящее устройство! Я читал в других сообщениях, что с эмулятором иногда это не работает – Alvaro

+1

Возможно, это может помочь: http://stackoverflow.com/questions/29907615/android-transparent-status-bar-and-actionbar/29907616#29907616 – GuilhE

ответ

2

Для строки состояния:

это одна работа для меня

//changing statusbar 
if (android.os.Build.VERSION.SDK_INT >= 21){ 
       Window window = this.getWindow(); 
       window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
       window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
       window.setStatusBarColor(this.getResources().getColor(R.color.primary_dark)); 
      } 

надеюсь это поможет

+0

Perfect @Mochamad, благодаря вашему сообщению я сделал это! Можно ли установить цвет строки состояния, если API ниже 21? Благодаря? – Alvaro

+0

приветствуется Я думаю, что ниже lollipop не поддерживается для изменения цвета в строке состояния, но кто-то уже заработал в этом сообщении http://stackoverflow.com/questions/22192291/how-to-change-the-status-bar -Колор-в-андроида –