android - SlidingTabsColors适合整个屏幕

use*_*282 0 tabs android

我已按照此示例创建了一个非常好的滑动选项卡式布局:http://developer.android.com/samples/SlidingTabsColors/project.html

这是非常好的,但我希望标签条适合整个屏幕长度.我现在只有4个项目,并且在显示所有内容后滑动选项卡才会停止.我希望它适合整个屏幕,就像最新的Facebook应用程序中使用的那样.

有没有人有想法?

小智 5

由于SlidingTabStrip类扩展了LinearLayout,因此可以使用权重来影响每个视图在Layout中占用的空间.

就我而言,如果选项卡中还有剩余空间,我希望视图使用相同的空间量.我所做的是修改SlidingTabLayout类,它填充标签条.该addView()方法被更改为提供LayoutParams,为每个添加的视图指定相等的权重.

如果视图小于列表条的总可用大小,则会强制视图占用整个空间,并且如果所有视图的总大小大于条带的可用大小,则视图具有与原始实现相同的行为.

原始代码:

private void populateTabStrip() {
    final PagerAdapter adapter = mViewPager.getAdapter();
    final View.OnClickListener tabClickListener = new TabClickListener();

    for (int i = 0; i < adapter.getCount(); i++) {
        View tabView = null;
        TextView tabTitleView = null;

        if (mTabViewLayoutId != 0) {
            // If there is a custom tab view layout id set, try and inflate it
            tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
                    false);
            tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
        }

        if (tabView == null) {
            tabView = createDefaultTabView(getContext());
        }

        if (tabTitleView == null && TextView.class.isInstance(tabView)) {
            tabTitleView = (TextView) tabView;
        }

        tabTitleView.setText(adapter.getPageTitle(i));
        tabView.setOnClickListener(tabClickListener);

        mTabStrip.addView(tabView);
    }
}
Run Code Online (Sandbox Code Playgroud)

修改后的代码

private void populateTabStrip() {
    final PagerAdapter adapter = mViewPager.getAdapter();
    final View.OnClickListener tabClickListener = new TabClickListener();

    for (int i = 0; i < adapter.getCount(); i++) {
        View tabView = null;
        TextView tabTitleView = null;

        if (mTabViewLayoutId != 0) {
            // If there is a custom tab view layout id set, try and inflate it
            tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
                    false);
            tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
        }

        if (tabView == null) {
            tabView = createDefaultTabView(getContext());
        }

        if (tabTitleView == null && TextView.class.isInstance(tabView)) {
            tabTitleView = (TextView) tabView;
        }

        tabTitleView.setText(adapter.getPageTitle(i));
        tabView.setOnClickListener(tabClickListener);

        mTabStrip.addView(tabView, new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.0f));
    }
}
Run Code Online (Sandbox Code Playgroud)