Actionbar.removealltabs()留在选项卡空间后面

时间:2019-02-18 11:05:38

标签: java android layout tabs android-actionbar

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);

2 个答案:

答案 0 :(得分:0)

使用ListViews时,我通常使用适配器。使用适配器,每次在列表上进行新更改时,都必须调用yourAdapter.notifyDataSetChaged(),以便列表可以正常更新。也许这就是您正在发生的情况,因此请尝试调用某种方法,例如我上面显示的方法,它可能会更新并清除空白空间。

答案 1 :(得分:0)

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

我不知道为什么Android建议使用一种过时且错误的方式在其官方网站上实施标签页。实际上,Youtube视频中提供的TabLayout示例均未找到404。