27

Google 刚刚为其在 Google Play 中的标签实现了新外观。

我知道这可以通过 ViewPagerIndicator 完成,但我不想在我的应用程序中使用另一个库并将应用程序的大小增加另一个 MB 左右。

我目前正在使用 android.support.v4.view.PagerTabStrip (就像在旧的 Google Play 中一样),我想知道是否也可以使用 android 支持库来实现新外观。

提前致谢。

4

3 回答 3

53

设计支持库(当前方法)。

设计支持库包含TabLayout允许您实现 Google Play-lie 选项卡的小部件:

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

然后初始化它:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);

有关完整示例,请参阅Cheesesquare 应用程序

PagerSlidingTabStrip 库

这是一个可以在 Github 上找到的即用型库。

截屏 截屏

于 2013-05-14T13:27:21.953 回答
34

Google 终于发布了他们的滑动标签 api。

要使用 SlidingTabsBasic,您首先需要从以下网址下载 zip 文件:http: //developer.android.com/downloads/samples/SlidingTabsBasic.zip

  1. 将 com.example.android.common.view 包中的 2 个 java 源文件包含到您的项目中。您可以选择将它们移动到项目中合适的包中。
  2. 要使用该组件,只需将其添加到您的视图层次结构中。然后在您的 Activity 或 Fragment 中,通过调用 mSlidingTabLayout.setViewPager(mViewPager);为您的 viewPager 提供 SlidingTabsBasic

来自 Google 的示例布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">

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

    <android.support.v4.view.ViewPager
          android:id="@+id/viewpager"
          android:layout_width="match_parent"
          android:layout_height="0px"
          android:layout_weight="1"
          android:background="@android:color/white"/>

</LinearLayout>

Activity 的 onCreate() 方法中的示例代码:

mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);

有关更多详细信息,请遵循 zip 文件 SlidingTabsBasicFragment.java 和 fragment_sample.xml 中的示例

于 2014-02-22T09:51:46.147 回答
1

试试这个

示例项目

ViewPager与片段一起使用来显示标签,就像在 google play 上一样。

于 2013-05-14T13:16:07.247 回答