TabLayout实现标签切换
? ? ? 通常我們有這樣一個(gè)需求,需要實(shí)現(xiàn)多個(gè)標(biāo)簽的切換,實(shí)現(xiàn)指示器背景色的改變,可以使用系統(tǒng)提供的TabLayout來(lái)實(shí)現(xiàn)。
? ? ? 一、首先我們?cè)趚ml定義一個(gè)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"? ?取消指示器點(diǎn)擊波紋效果
app:tabTextColor="@android:color/white"? ?tab的文字顏色
app:tabTextAppearance="@style/tabLayoutTextStyle"? ?這個(gè)是設(shè)置tab的文字大小,只能通過此方法,如下:
<style name="tabLayoutTextStyle"><item name="android:textSize">28sp</item></style>二、在onCreate()進(jìn)行初始化
tabLayout.addTab(tabLayout.newTab().setText("成都"));//設(shè)置true為默認(rèn)選中,不然第一次點(diǎn)擊tablayout不會(huì)回調(diào)監(jiān)聽方法tabLayout.addTab(tabLayout.newTab().setText("重慶"), true);tabLayout.addTab(tabLayout.newTab().setText("上海"));//默認(rèn)選中的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的標(biāo)簽設(shè)置成跟圖片一樣的形狀,顏色并不是跟我們的圖片一樣,只能通過setSelectedTabIndicatorColor設(shè)置tab的背景顏色。而且TabLayout只能修改所有tab的文字顏色,如果我們需要改變單獨(dú)某個(gè)tab的文字顏色,或者將指示器的背景使用圖片,并在某些狀態(tài)下tab還不能被選中呢,這樣我們就只能使用自定義view來(lái)實(shí)現(xiàn)了,以后我會(huì)再開一篇文章給大家講解。
總結(jié)
以上是生活随笔為你收集整理的TabLayout实现标签切换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: BZOJ2654: tree(陈立杰)
 - 下一篇: 微信快速开发框架简介