Вкладки Приближается панель действий при раздувании пользовательских макетов - программирование
Подтвердить что ты не робот

Вкладки Приближается панель действий при раздувании пользовательских макетов

Я попробовал все, что упоминалось здесь, во всех других ответах 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);
4b9b3361

Ответ 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", установленный для него. Это должно сделать это.