### 需求:4个页面,每个页面有“下一步”按钮,还有一个选项卡(Tablayout形式),满足指定条件condition可点击按钮和选项卡(tab)。
一开始直接用的Tablayout+ViewPager+Fragment,发现tablayout的指示器颜色很难去控制,tab点击可以控制,但指示器颜色还是会碰到Tab就换到指定颜色,最终决定用老方法,自己做个线性布局嵌套。
android:id="@+id/lin1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
android:id="@+id/tab_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一步" />
android:id="@+id/tab_indic"
android:layout_width="wrap_content"
android:layout_height="2dp"
android:layout_marginTop="8dp"
android:visibility="visible" />
至于怎么做这个线性布局 ,我就不再赘述了,说一下控制思想![](http://i.imgur.com/yEbLHQW.png)
指定一个int值变量`int currPage =0;`,其实就是第几页,当前是第一页时 ,不用做判断,当页面0条件满足跳转,点击了下一步,就调用了`ViewPager.setCurrentItem(int page)` 去换fragment(前提是你放在了Viewpager中..),同时处理指示器颜色。到了下一个页面 currPage =1 ,那么可通过自定义tablayout点击进入的页面就是currPage<=1,到页面4 那前3个页面都可以通过点击tab进入,tab(线性布局)的点击事件做如下判断 如果 当前页面是2(页面标记从0开始) ,那么 tab 0~2 都可点击,
case R.id.lin3:
if (currPage > 1) {
vpager_act_supply.setCurrentItem(2);
tab_indic1.setBackgroundColor(getResources().getColor(R.color.white));
tab_indic2.setBackgroundColor(getResources().getColor(R.color.orange));
tab_indic3.setBackgroundColor(getResources().getColor(R.color.white));
tab_indic.setBackgroundColor(getResources().getColor(R.color.white));
}
这样,不满足条件的页面就无法点进去了 哈哈 。