Actionbar.removealltabs()留下标签空间

问题描述 投票:2回答:2

Actionbar.removealltabs删除我的所有标签。但是,用于固定标签的剩余空间仍然存在。因此,我的操作栏看起来像一个非常高的动作栏,下半部空。

使用具有appcompatactivity的支持操作栏。

我尝试在我的片段和Mainactivity中调用Actionbar.removealltabs ...相同的结果。

Tabs pre-destruction

Tabs Destroyed, leaving behind it's empty space

How it originally looked before adding tabs. This is my desired result

这是创建标签的我的片段。

@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);
java android layout tabs android-actionbar
2个回答
0
投票

当我使用ListViews时,我通常使用适配器。使用适配器,每次在列表上进行新的更改时都必须调用yourAdapter.notifyDataSetChaged(),以便列表可以正常更新。也许这就是你正在发生的事情,所以试着调用一些方法,就像我上面展示的那样,它可能会更新并清除空白区域。


0
投票

我通过另一种方式使用标签来修复它,如本视频中所述的Tablayout。 https://www.youtube.com/watch?v=zQekzaAgIlQ。我不得不制作自己的工具栏而不是默认主题。

我不知道为什么Android会建议在他们的官方网站上实施标签而不是这种方式。事实上,Youtube视频中提供的TabLayout示例均未找到404。

© www.soinside.com 2019 - 2024. All rights reserved.