TabLayout实现标签切换
? ? ? 通常我們有這樣一個需求,需要實現多個標簽的切換,實現指示器背景色的改變,可以使用系統提供的TabLayout來實現。
? ? ? 一、首先我們在xml定義一個tablayout文件
<android.support.design.widget.TabLayoutandroid:id="@+id/tabLayout"android:layout_width="500dp"android:layout_height="50dp"android:background="@drawable/tab_bg"android:elevation="3dp"app:tabGravity="fill"app:tabIndicator="@drawable/tab_sel"app:tabIndicatorColor="@android:color/blue"app:tabIndicatorGravity="center"app:tabRippleColor="@android:color/transparent"app:tabTextAppearance="@style/tabLayoutTextStyle"app:tabTextColor="@android:color/white"></android.support.design.widget.TabLayout>app:tabIndicator? ? tab指示器的背景圖片
app:tabIndicatorColor? ? tab指示器的顏色
app:tabIndicatorGravity? ?指示器居中
app:tabRippleColor="@android:color/transparent"? ?取消指示器點擊波紋效果
app:tabTextColor="@android:color/white"? ?tab的文字顏色
app:tabTextAppearance="@style/tabLayoutTextStyle"? ?這個是設置tab的文字大小,只能通過此方法,如下:
<style name="tabLayoutTextStyle"><item name="android:textSize">28sp</item></style>二、在onCreate()進行初始化
tabLayout.addTab(tabLayout.newTab().setText("成都"));//設置true為默認選中,不然第一次點擊tablayout不會回調監聽方法tabLayout.addTab(tabLayout.newTab().setText("重慶"), true);tabLayout.addTab(tabLayout.newTab().setText("上海"));//默認選中的tabtabLayout.setScrollPosition(1, 0, false);tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {int position = tab.getPosition();switch (position) {case 0: //修改指示器的顏色 tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.007a67)); //修改指示器背景圖片tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_1);case 1:tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.065eab));tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_2);break;case 2:tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.6f5a0f));tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_3);break;}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});? ? ? ? ?這樣基本能滿足我們的需求了。但是可能有小伙伴注意到了,通過tabLayout.setSelectedTabIndicator(Drawable drawable);方法,我們只能把tab的標簽設置成跟圖片一樣的形狀,顏色并不是跟我們的圖片一樣,只能通過setSelectedTabIndicatorColor設置tab的背景顏色。而且TabLayout只能修改所有tab的文字顏色,如果我們需要改變單獨某個tab的文字顏色,或者將指示器的背景使用圖片,并在某些狀態下tab還不能被選中呢,這樣我們就只能使用自定義view來實現了,以后我會再開一篇文章給大家講解。
總結
以上是生活随笔為你收集整理的TabLayout实现标签切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ2654: tree(陈立杰)
- 下一篇: 微信快速开发框架简介