android - fragment 选项卡未使用所有空间

标签 android android-fragments layout tabs fragment

我正尝试按照本教程将我的 Activity 应用程序转换为 fragment : 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;
        }
    }

}

问题是我得到了这个结果: enter image description here

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

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

最佳答案

您必须将 TabLayout 的 tabGravity 设置为 fill 并将 tabMode 设置为 fixed

要么在xml

<android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        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);

关于android - fragment 选项卡未使用所有空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903989/

相关文章:

android - 这些代码 fragment 有什么区别?

java - onActivityResult 请求代码返回 0

css - 如何修复 100% 高度的布局底部(jQuery Mobile 和 Google map )?

ruby-on-rails - 事件管理员 : Including Javascript

Android:当用户在 View 之外按下时如何关闭自定义 View

如果不需要权限,则设置 Android PhoneGap 配置文件

android - ViewPager 中的动态内部 fragment 重叠

Java 图形不显示更改

android - 使用 Geocoder (Android) 绘制路径有什么限制吗?

android - 图片按钮和按钮的区别