Android:ViewPager-PagerSlidingTabStrip,选择状态的自定义选项卡背景

Android:ViewPager-PagerSlidingTabStrip,选择状态的自定义选项卡背景,android,android-viewpager,pagerslidingtabstrip,Android,Android Viewpager,Pagerslidingtabstrip,我需要为每个选项卡使用自定义背景,当它们中的每一个都处于选中状态时。但当我选择一个选项卡时,仍然没有发生任何事情 我使用的选择器如下:(tab_selector.xml) 我尝试混合不同的状态并重新定位它们,但仍然不起作用。 我试图在选定的模式上设置一个特定的选项卡,但我想不出来 我自己想出来了,但不是用标准的方法! 因为我需要在我选择的选项卡上有一个类似渐变的背景,所以我使用了指示器和下划线,如下所示: <com.astuetz.PagerSlidingTabStrip andr

我需要为每个选项卡使用自定义背景,当它们中的每一个都处于选中状态时。但当我选择一个选项卡时,仍然没有发生任何事情

我使用的选择器如下:(tab_selector.xml)

我尝试混合不同的状态并重新定位它们,但仍然不起作用。
我试图在选定的模式上设置一个特定的选项卡,但我想不出来

我自己想出来了,但不是用标准的方法! 因为我需要在我选择的选项卡上有一个类似渐变的背景,所以我使用了指示器和下划线,如下所示:

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/tab_back"
    app1:pstsUnderlineHeight="24dip"
    app1:pstsIndicatorHeight="48dip"
    app1:pstsIndicatorColor="#e7e7e7"
    app1:pstsShouldExpand="true" />

仅适用于那些不使用分叉页面滑动标签条寻找答案的人

对于选择器问题,您可以使用CustomOnPageChangeListener在tabStrip上设置OnPageChangeListener,并将tabStrip内按钮的选中状态设置为“true”

这是我的CustomOnPageChangeListener

private class CustomOnPageChangeListenner implements ViewPager.OnPageChangeListener{

    private PagerSlidingTabStrip tabStrip;
    private int previousPage=0;
    //Constructor initiate with TapStrip
    //
    public CustomOnPageChangeListenner(PagerSlidingTabStrip tab){
        tabStrip=tab;
        //Set the first image button in tabStrip to selected,
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(0).setSelected(true);
    }
    @Override
    public void onPageScrolled(int i, float v, int i2) {

    }

    @Override
    public void onPageSelected(int i) {
        //set the previous selected page to state_selected = false
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(previousPage).setSelected(false);
        //set the selected page to state_selected = true
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(i).setSelected(true);
        //remember the current page
        previousPage=i;
    }

    @Override
    public void onPageScrollStateChanged(int i) {

    }
}
然后将此自定义侦听器设置为选项卡条

PagerSlidingTabStrip tabStrip;
tabStrip.setOnPageChangeListener(new CustomOnPageChangeListenner(tabStrip));

我调用
PagerSlidingTabStrip.setOnPageChangeListener
而不是
viewPager.setOnPageChangeListener


它对我很有用。

嘿,我也想这么做,但不明白什么是app1??您可以使用它来自定义此库的属性。我在几周前使用过这个,但我认为要有不止一个元素,应该使用app2、app3等等@法扎迪夫,你知道如何在每个标签上放一个不同的抽屉吗?用于使用选项卡选择器文件的
xml
customization
pstBranchBackground
将只使用一个图像。不知道如何在我的4个标签上添加4种不同的抽绳。如果你知道的话,谢谢你。你剪的不管用,兄弟。NPE in((LinearLayout)选项卡strip.getChildAt(0)).getChildAt(0)
<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/tab_back"
    app1:pstsUnderlineHeight="24dip"
    app1:pstsIndicatorHeight="48dip"
    app1:pstsIndicatorColor="#e7e7e7"
    app1:pstsShouldExpand="true" />
private class CustomOnPageChangeListenner implements ViewPager.OnPageChangeListener{

    private PagerSlidingTabStrip tabStrip;
    private int previousPage=0;
    //Constructor initiate with TapStrip
    //
    public CustomOnPageChangeListenner(PagerSlidingTabStrip tab){
        tabStrip=tab;
        //Set the first image button in tabStrip to selected,
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(0).setSelected(true);
    }
    @Override
    public void onPageScrolled(int i, float v, int i2) {

    }

    @Override
    public void onPageSelected(int i) {
        //set the previous selected page to state_selected = false
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(previousPage).setSelected(false);
        //set the selected page to state_selected = true
        ((LinearLayout)tabStrip.getChildAt(0)).getChildAt(i).setSelected(true);
        //remember the current page
        previousPage=i;
    }

    @Override
    public void onPageScrollStateChanged(int i) {

    }
}
PagerSlidingTabStrip tabStrip;
tabStrip.setOnPageChangeListener(new CustomOnPageChangeListenner(tabStrip));