当每个标签位于 state_selected 模式时,我需要为每个标签使用自定义背景。但是当我选择标签时仍然没有任何反应。
我使用了这样的选择器:( tab_selector.xml )
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/gradient_tab" />
<item android:state_selected="false"
android:drawable="@drawable/tab_unselected" />
<item android:drawable="@drawable/tab_unselected"/>
</selector>
这是 activity_main.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:pstsTabBackground="@drawable/tab_selector"
app1:pstsIndicatorColor="#00FFFFFF"
app1:pstsShouldExpand="true" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tabs"
tools:context=".MainActivity" />
很明显,我正在使用astuetz PagerSlidingTabStrip。 以下是我使用ViewPager和PagerSlidingTabStrip的方式:
final PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(mainPagerAdapter);
tabs.setTextColor(Color.WHITE);
tabs.setViewPager(viewPager);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
tabs.setViewPager(viewPager);
}
我尝试混合不同的状态并重新定位它们,但仍然无法正常工作。 我试图在选定的模式上放置一个特定的选项卡,但我无法弄明白。
答案 0 :(得分:3)
我自己想出来了,但不是标准的方式! 由于我在所选标签上需要像背景一样的渐变,因此我使用了指示符并加下划线:
<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" />
答案 1 :(得分:1)
仅针对那些在不使用分叉的PageSliding标签条的情况下寻找答案的人。
对于选择器问题,您可以使用CustomOnPageChangeListener在tabStrip上设置OnPageChangeListener,并将tabStrip中按钮的selected_state设置为&#34; true&#34;
这是我的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));
答案 2 :(得分:1)
我致电PagerSlidingTabStrip.setOnPageChangeListener
而不是viewPager.setOnPageChangeListener
它对我有用。