Вкладки Приближается панель действий при раздувании пользовательских макетов
Я попробовал все, что упоминалось здесь, во всех других ответах Stackoverflow, но не работает. Вот мой код.
actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffffff")));
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.actionbar_layout);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setLogo(null);
actionBar.setDisplayShowTitleEnabled(false);
View homeIcon = findViewById(android.R.id.home);
((View) homeIcon.getParent()).setVisibility(View.GONE);
Ответы
Ответ 1
Вкладки отображаются сверху, когда вы скрываете элемент Home. Это немного противоречит интуитивно понятным, но это также делает некоторый смысл дизайна. Они существенно подталкивают вас использовать вкладки в качестве заголовков для разделов и использовать панель действий под ними для действий внутри этих разделов.
Вам нужно setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME)
, чтобы снова добавить вкладки. Для этого, вероятно, потребуется также ненулевой логотип (вы можете сделать прозрачный 1px в -nodpi, чтобы он исчез)
Ответ 2
Использование принятого решения оставляет на клавиатуре actionbar
левое дополнение, которое сокращает ваш пользовательский вид.
решение состоит в том, чтобы добавить этот код в onCreate
Activity
:
View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.abs__home);
((View) homeIcon.getParent()).setLayoutParams(new LinearLayout.LayoutParams(0, 0));
((View) homeIcon).setVisibility(View.GONE);
Ответ 3
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
getActionBar().setDisplayUseLogoEnabled(true);
getActionBar().setDisplayShowCustomEnabled(true);
getActionBar().setCustomView(R.layout.actionbar_layout);
Это сработало для меня.
Ответ 4
Попробуйте использовать LayoutInflater
для раздувания представления, а затем установите представление на панель действий.
LayoutInflater inflator = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.layout, null);
actionBar.setCustomView(v);
И из this
используйте RelativeLayout вместо LinearLayout в качестве основного контейнера. Это важно иметь android: layout_gravity = "fill_horizontal", установленный для него. Это должно сделать это.