Actionbar.removealltabs () оставляя позади вкладки - PullRequest
0 голосов
/ 18 февраля 2019

Actionbar.removealltabs удаляет все мои вкладки.Однако оставшееся пространство, используемое для удержания вкладок, все еще там.В результате моя панель действий выглядит как очень высокая панель действий с пустой нижней половиной.

Использование поддержки actionbar с appcompatacctivity.

Я пытался вызвать Actionbar.removealltabs как в моем фрагменте, так и в Mainactivity... тот же результат.

Вкладки предварительного уничтожения

Вкладки уничтожены, оставив после себя пустое пространство

Как это изначально выглядело до добавления вкладок.Это мой желаемый результат

Вот мой фрагмент, который создал вкладки.

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    mViewPager = view.findViewById(R.id.reddit_search_pager);
    mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();

    setViewPager();
    setTabs();
}


public void setTabs() {
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        @Override
        public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {
            mViewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {

        }

        @Override
        public void onTabReselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction ft) {

        }
    };
    for (int i = 0; i < 3; i++) {
        String tabTitle = "";
        switch (i) {
            case 0:
                tabTitle = TAB_TITLE_SUBREDDITS;
                break;
            case 1:
                tabTitle = TAB_TITLE_POSTS;
                break;
            case 2:
                tabTitle = TAB_TITLE_USERS;
                break;
        }
        mActionBar.addTab(
                mActionBar.newTab()
                    .setText(tabTitle)
                    .setTabListener(tabListener));
        }
}

Вот мои основные ранее существовавшие изменения MainActivity на панели инструментов.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    NetworkingUtils myClass = new NetworkingUtils(this);

    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_action_menu);

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Я исправил это, используя другой способ использования вкладок, Tablayout, как описано в этом видео.https://www.youtube.com/watch?v=zQekzaAgIlQ. Мне пришлось создать собственную панель инструментов вместо темы по умолчанию.

Я понятия не имею, почему Android предлагает устаревший и ошибочный способ реализации вкладок на их официальном веб-сайте вместо этого.Фактически, примеры TabLayout, представленные в видео Youtube, все 404 не найдены.

0 голосов
/ 18 февраля 2019

Когда я работаю с ListViews, я обычно использую адаптеры.С адаптерами вы должны вызывать yourAdapter.notifyDataSetChaged() каждый раз, когда вы вносите новое изменение в свой список, чтобы список мог нормально обновляться.Возможно, именно это и происходит с вами, поэтому попробуйте вызвать какой-то метод, подобный тому, который я показал выше, и он, возможно, обновит и очистит пустое пространство.

...