1

我已按照指南将PagerSlidingTabStrip 库添加到我的项目中,但选项卡下的条带不会滑动(我指的是您可以在 Google Play 应用程序中看到的内容)。这是我的主要活动:

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mCollectionPagerAdapter);

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(mViewPager);
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

        @Override

        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }

    });
    for (int i = 0; i < mCollectionPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar.newTab()
                .setText(mCollectionPagerAdapter.getPageTitle(i))
                .setTabListener(this));

    }

编辑

活动主.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip"/>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context=".MainActivity" />

</RelativeLayout>

主要活动:

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener, android.app.ActionBar.TabListener {
CollectionPagerAdapter mCollectionPagerAdapter;
ViewPager mViewPager;
SharedPreferences mPrefs;
final String welcomeScreenShownPref = "welcomeScreenShown";


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setProgressBarIndeterminateVisibility(true);
    setProgressBarIndeterminateVisibility(false);
    setContentView(R.layout.activity_main);


    mCollectionPagerAdapter = new CollectionPagerAdapter(
            getSupportFragmentManager());

    final android.app.ActionBar actionBar = getActionBar();
    assert actionBar != null;
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setDisplayUseLogoEnabled(false);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setIcon(R.drawable.ic_action_icon3);
    actionBar.setTitle(R.string.app_name2);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mCollectionPagerAdapter);

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(mViewPager);


}

EDIT2 tabs_background.xml:

<item android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_example" />
<item android:state_focused="true" android:drawable="@drawable/tab_selected_focused_example"/>
<item android:drawable="@color/tab_color"/>

主要活动:

actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setDisplayUseLogoEnabled(false);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setIcon(R.drawable.ic_action_icon3);
    actionBar.setTitle(R.string.app_name2);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mCollectionPagerAdapter);

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(mViewPager);
    tabs.setIndicatorColor(android.R.color.white);

活动主.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    app:pstsIndicatorColor="@android:color/white"
    app:pstsUnderlineColor="@color/tab_color"
    app:pstsDividerColor="@color/tab_color"
    app:pstsTabBackground="@drawable/tabs_background"/>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_below="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context=".MainActivity" />

</RelativeLayout>
4

2 回答 2

5

如果你想使用PagerSlidingTabStrip你不需要在actionBar中添加标签。只需将您的代码剪切为:

mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mCollectionPagerAdapter);

PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(mViewPager);

该库自动将选项卡添加到操作栏,从此方法获取选项卡文本:

@Override
public CharSequence getPageTitle(int position) {
    return TITLES[position];
}

编辑:

android:layout_below属性添加到ViewPager,它应该可以工作:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="48dip"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_below="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".MainActivity" />

</RelativeLayout>

编辑2:

selector首先,在您的可绘制文件夹中创建一个,称为tabs_background.xml选项卡背景:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@color/your_pressed_red_color" />
    <item android:state_focused="true" android:drawable="@color/your_focused_red_color"/>
    <item android:drawable="@color/your_red_color"/>

</selector>

然后你可以自定义选项卡,通过设置属性,你可以在这里看到它,至于你的自定义:

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    app:pstsIndicatorColor="@android:color/white"
    app:pstsUnderlineColor="@color/your_red_color"
    app:pstsDividerColor="@color/your_red_color"
    app:pstsTabBackground="@drawable/tabs_background">

不要忘记将此行添加到父RelativeLayoutxmlns:app="http://schemas.android.com/apk/res-auto"

最后,要设置文本颜色,以编程方式进行:

tabs.setTextColor(android.R.color.white);
于 2014-11-04T19:02:18.647 回答
0

只要确保您的主要活动是线性布局。它在RelativeLayout 中不起作用。我有同样的问题,它确实简单地解决了;)

于 2022-01-02T20:54:07.487 回答