ActionBar + Tabs + Landscape mode

Интерфейс, диалоги, темы, стили, меню
Ответить
rgnrok
Сообщения: 7
Зарегистрирован: 13 дек 2013, 18:52

ActionBar + Tabs + Landscape mode

Сообщение rgnrok » 13 дек 2013, 19:06

Добрый вечер.
Есть Activity с ActionBar в котором навигация осуществляется при помощи табов.
В портретном режиме табы располагаются под ActionBar, однако при повороте экрана табы перемешаются внутрь ActionBar
Подскажите пожалуйста как можно сделать так, чтобы табы были всегда под ActionBar.
Или хотя бы как сделать чтобы отображался тайтл нормально

Код: Выделить всё

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_highway);

        // Set up the action bar.
        final ActionBar actionBar = getSupportActionBar();

        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowTitleEnabled(true);


        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);


        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        // For each of the sections in the app, add a tab to the action bar.
        for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
            actionBar.addTab(
                    actionBar.newTab()
                            .setText(mSectionsPagerAdapter.getPageTitle(i))
                            .setTabListener(this));
        }
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }
Спасибо
Вложения
action.png
action.png (19.28 КБ) 3549 просмотров

Аватара пользователя
alexmedv
Сообщения: 29
Зарегистрирован: 29 май 2013, 12:55

Re: ActionBar + Tabs + Landscape mode

Сообщение alexmedv » 14 дек 2013, 13:00

Скорее всего никак нельзя. ActionBar так устроена что особо и не спрашивает программиста как ей разместить табы.
Чтоб тайтл отображался нормально, попробуй убрать кнопки под "overflow button" или вообще сделай отдельную панель с кнопками снизу.

rgnrok
Сообщения: 7
Зарегистрирован: 13 дек 2013, 18:52

Re: ActionBar + Tabs + Landscape mode

Сообщение rgnrok » 15 дек 2013, 09:31

Спасибо за ответ.
Пробовал убрать кнопки вниз, в портретном режиме, все ок, но при повороте они также уходили наверх)
Переделал все под Tab Host, так выглядит как надо.
Просто странно, почему они не добавили какой-нибудь флаг для ActionBar, ведь гугл сам часто располагает табы всегда ниже бара, тот же "маркет" или "фото"

Аватара пользователя
alexmedv
Сообщения: 29
Зарегистрирован: 29 май 2013, 12:55

Re: ActionBar + Tabs + Landscape mode

Сообщение alexmedv » 15 дек 2013, 11:36

ведь гугл сам часто располагает табы всегда ниже бара, тот же "маркет" или "фото"
Да, я тоже обратил на это внимание сегодня. Мне кажется что табы располагаются на отдельной строчке из-за того что их очень много. Можно попробовать увеличить число вкладок (для эксперимента) и посмотреть что получится.

rgnrok
Сообщения: 7
Зарегистрирован: 13 дек 2013, 18:52

Re: ActionBar + Tabs + Landscape mode

Сообщение rgnrok » 15 дек 2013, 18:42

Тоже возникала подобная идея, но в маркете есть категории у которых количество табов всего 3-4 шт и они легко влазят в экран, тоже стандартное приложение "Фото" всего 2 вкладки, и при повороте даже на планшете они остаются под баром.

Пробовал увеличить у себя в приложении количество табов, но они либо превращаются в выпадающий список (если тип навигации указан как лист) либо в прокручивающиеся табы (если навигация табами выбрана), но в любом случае остаются внутри actionBar

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

Ответить