Я совершенно новый в мире 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);
Но я не получил никакого результата. Есть ли у вас какие-либо идеи? Спасибо за вашу помощь :)
для строки состояния вы используете эмулятор или реальное устройство? –
Я использую настоящее устройство! Я читал в других сообщениях, что с эмулятором иногда это не работает – Alvaro
Возможно, это может помочь: http://stackoverflow.com/questions/29907615/android-transparent-status-bar-and-actionbar/29907616#29907616 – GuilhE