PagerSlidingTabStrip - 如何更改选项卡背景颜色

时间:2014-08-11 08:02:01

标签: android

我正在使用PagerSlidingTabStrip库。

我不知道如何更改标签背景颜色。我尝试将其从xml更改为:

<android.support.v4.view.PagerTitleStrip 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/title"
    android:paddingTop="4dp"
    android:layout_gravity="top"
    android:background="#222222"
    android:paddingBottom="4dp"
     >
</android.support.v4.view.PagerTitleStrip>

但它没有用。

这是mainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    pager = (ViewPager) findViewById(R.id.pager);
    adapter = new MyPagerAdapter(getSupportFragmentManager());
    pager.setAdapter(adapter);
    final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources().getDisplayMetrics());
    pager.setPageMargin(pageMargin);
    tabs.setViewPager(pager);
    tabs.setTabBackground(Color.RED);
    changeColor(currentColor);
}
你可以帮帮我吗?

谢谢你

3 个答案:

答案 0 :(得分:1)

如果查看自定义下github中的说明,您可以看到可以使用以下属性更改背景:pstsTabBackground:每个选项卡的背景可绘制,应该是StateListDrawable。

如果这不起作用,您无论如何都可以在Styles.xml文件中更改它。顺便说一下,你确定你使用的是正确的视图吗?我认为您应该使用com.astuetz.PagerSlidingTabStrip检查https://github.com/astuetz/PagerSlidingTabStrip了解更多详情

答案 1 :(得分:0)

我建议你使用 android:background 而不是 pstsTabBackground

答案 2 :(得分:0)

更改标签颜色的最佳方法是简单地更改onCreate()中的文字背景颜色,如:

mTabsLinearLayout = ((LinearLayout) tabs.getChildAt(0));
            for (int i = 0; i < mTabsLinearLayout.getChildCount(); i++) {
                    TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);

                            if (i == currentPosition) {
                             tv.setBackgroundColor(getResources().getColor(R.color.caldroid_white));
                       } else {
                            tv.setBackgroundColor(getResources().getColor(R.color.gray));
                        }
                }


        tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                currentPosition = position;
                for(int i=0; i < mTabsLinearLayout.getChildCount(); i++){
                                        TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);
                                        if(i == position){
                                                tv.setBackgroundColor(getResources().getColor(R.color.caldroid_white));
                                            } else {
                                                tv.setBackgroundColor(getResources().getColor(R.color.gray));
                                            }
                                    }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

随着版本改变背景颜色的textview可能是隐形指标。在这种情况下,您可以使用图层列表(如

)为选定和取消选择的选项卡设置自定义背景
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
    <shape android:shape="rectangle">
        <solid android:color="@color/blue_light" />

    </shape>
</item>

<!-- MAIN SHAPE -->
<item  android:bottom="4dp">
    <shape android:shape="rectangle">
        <solid android:color="@color/dashboard_selected_tab" />
    </shape>
</item>

Similerly for deselcted tab