我已经实现了可滚动的标签+滑动,一切正常。 但是我有一些与当前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分吗?谢谢。
答案 0 :(得分:11)
好吧,我实际上找到了一个合适的解决方案。忘掉PagerTabStrip
;)
显然,Google发布了一个sample app,其中包含他们在Google Play应用中使用的确切源代码。它非常易于使用。下载示例应用并从中复制两个文件:SlidingTabLayout.java
和SlidingTabStrip.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
效果很好。但是,如果您有三个选项卡,则会看到所有选项卡都与左侧对齐,并且最后一个选项卡与视图宽度之间存在较大差距。
要解决此问题,请在SlidingTabLayout.java
下方的第173行之后修改TextView textView = new TextView(context);
,添加以下内容:
textView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f));
现在标签之间的空间将被正确划分:
答案 1 :(得分:0)