片段选项卡未使用所有空间

Posted

技术标签:

【中文标题】片段选项卡未使用所有空间【英文标题】:Fragment Tabs not using all space 【发布时间】:2016-02-27 12:05:52 【问题描述】:

我正在尝试按照本教程将我的活动应用程序转换为片段: http://www.exoguru.com/android/material-design/navigation/material-design-tabs-with-fragments 由于我将只使用两个选项卡,因此我对 BlankFragment 进行了此更改

public class BlankFragment extends Fragment 

    private PagerSlidingTabStrip tabs;
    private static ViewPager viewPager;
    private final int int_items = 2;

    public BlankFragment()  // Required empty public constructor 
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 

        // Inflate the layout for this fragment
        View x = inflater.inflate(R.layout.fragment_blank, container, false);

        tabs = (PagerSlidingTabStrip) x.findViewById(R.id.tab_strip);

        viewPager = (ViewPager) x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        tabs.post(new Runnable() 
            @Override
            public void run() 
                tabs.setViewPager(viewPager);
            
        );

        int[][] tabStates = new int[][] 
                new int[]  android.R.attr.state_pressed, // enabled
                new int[]  android.R.attr.state_selected,  // unchecked
                new int[]  -android.R.attr.state_selected
        ;

        int[] tabColors = new int[] R.color.colorAccent,R.color.colorAccent,R.color.colorAccent;

        ColorStateList tabList = new ColorStateList(tabStates, tabColors);
        tabs.setTextColor(tabList); // Setting the Tab Text Color

        return x;
    

    public class MyAdapter extends FragmentPagerAdapter  // Tab Adapter

        public MyAdapter(FragmentManager fm)  super(fm); 

        @Override
        public Fragment getItem(int position)
        
            switch (position)
                case 0 : return new Tab1();
                case 1 : return new Tab2();
            

            return null;
        

        @Override
        public int getCount()  return int_items; 

        @Override
        public CharSequence getPageTitle(int position) 

            switch (position)
                case 0 :
                    return "Temps        ";
                case 1 :
                    return "Vetement       ";
            
            return null;
        
    


问题是我得到了这个结果:

如您所见,标签文本并没有像这样使用所有空间: https://raw.githubusercontent.com/joseedwin84/Android-Sliding-Tabs-With-Material-Design/master/tabpic.png

那么我需要改变什么? 我试图检查布局,它们都设置为 match_parent 宽度。 所以现在我不知道去哪里找。 如果有人可以帮助我,那就太好了。

【问题讨论】:

将您的 TabLayout 的 tabGravity 设置为 fill,查看答案了解详情 【参考方案1】:

您必须将 TabLayout 的 tabGravity 设置为 filltabMode 设置为 fixed

xml

<android.support.design.widget.TabLayout
        android:layout_
        android:layout_
        android:id="@+id/tabLayout"
        app:tabGravity="fill"
        app:tabMode="fixed" />

或者你可以在 java

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);

【讨论】:

谢谢,我没有使用 TabLayout,而是使用 PagerSlidingTabStrip,根据您的回答,我在文档中发现这是一个布局问题,我应该使用 app:shouldExpand="true"【参考方案2】:

谢谢,我没有使用 TabLayout,而是使用 PagerSlidingTabStrip,根据您的回答,我在文档中发现这是一个布局问题,我应该使用 app:shouldExpand="true"

【讨论】:

以上是关于片段选项卡未使用所有空间的主要内容,如果未能解决你的问题,请参考以下文章

选项卡未添加到 QTabWidget

如果选项卡未处于活动状态,jqgrid 无法在 jquery-ui 选项卡下正确加载

默认选项卡未将第一个选项卡显示为已选中

Dart Flutter DevTools“调试器”选项卡未显示

引导导航选项卡未加载正确的页面

Material-UI 选项卡未在页面渲染上显示组件报告