PagerTabStrip中的一些问题和困难

时间:2014-03-02 18:29:52

标签: android tabs android-viewpager

我已经实现了可滚动的标签+滑动,一切正常。 但是我有一些与当前PagerTabStrip相关的问题:

1。我无法将当前标题改为Bold

2。在渲染视图时,无法选择我想要显示的默认标签(例如:位置为2的标签页),例如Google Play应用中的标签

3. 第一个和最后一个标签左边和右边分别有一个边距,我可以将它设置为0dp吗?

这是我可以为标签设置样式的方法:

Java:

strip = (PagerTabStrip) findViewById(R.id.pager_tab_strip);
strip.setTabIndicatorColorResource(R.color.light_blue);
strip.setDrawFullUnderline(true);

布局:

<android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_tab_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="@drawable/pagertitle_border_bottom"
    android:paddingBottom="15dp"
    android:paddingTop="15dp"
    android:textColor="@color/light_blue" />

任何人都能帮助我获得3分吗?谢谢。

2 个答案:

答案 0 :(得分:11)

好吧,我实际上找到了一个合适的解决方案。忘掉PagerTabStrip;)

显然,Google发布了一个sample app,其中包含他们在Google Play应用中使用的确切源代码。它非常易于使用。下载示例应用并从中复制两个文件:SlidingTabLayout.javaSlidingTabStrip.java

然后在您的布局XML中,在ViewPager上方添加以下内容(将com.example更改为您的包名称):

<com.example.SlidingTabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

<android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_marginTop="5dp"
        android:layout_weight="1.5"
        android:layout_width="match_parent"
        android:background="@android:color/white"
        android:layout_height="0dp"/>

初始化ViewPager后,将以下内容添加到活动中:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(new GridPagerAdapter(getSupportFragmentManager()));
        // Initialize the SlidingTabLayout. Note that the order is important. First init ViewPager and Adapter and only then init SlidingTabLayout
        mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
        mSlidingTabLayout.setViewPager(mViewPager);
    }

SlidingTabLayout的API可让您轻松完成基本样式,例如更改标签颜色,分隔线颜色,指示灯颜色等。

更重要的是,当您有多个标签时,Google提供的SlidingTabLayout效果很好。但是,如果您有三个选项卡,则会看到所有选项卡都与左侧对齐,并且最后一个选项卡与视图宽度之间存在较大差距。 enter image description here

要解决此问题,请在SlidingTabLayout.java下方的第173行之后修改TextView textView = new TextView(context);,添加以下内容:

textView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f));

现在标签之间的空间将被正确划分: enter image description here

答案 1 :(得分:0)

看看这个。这个人非常清楚地解释了如何使用滑动标签布局

Understanding Sliding Tab Layout

任何自定义

更改SlidingTabLayout.java类中的代码