基于TabLayout中的Tab間隔設(shè)置方法(實(shí)例講解)
TabLayout和ViewPager搭配使用,是有很多方便性,但是TabLayout這東西還是有很多被人吐槽的地方。
這里只講怎么設(shè)置tab之間的間隔,網(wǎng)上找了一堆方法,什么padding和margin的啥都沒用,沒辦法,想用TabLayout只能自己想辦法了。效果如下:
一、實(shí)現(xiàn)方法,既然這東西不好設(shè)置,那就直接在背景上做點(diǎn)事情,布局代碼如下:
<android.support.design.widget.TabLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/tl_download_tabs" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal" android:overScrollMode="never" app:tabMode="fixed" app:tabPaddingStart="30dp" app:tabPaddingEnd="30dp" app:tabIndicatorHeight="0dp" app:tabBackground="@drawable/download_tab_bg_selector" app:tabSelectedTextColor="#000000" app:tabTextColor="#ffffff"/>
二、其中關(guān)鍵的地方就在背景的selector上,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <!--<shape> <solid android:color="#ffffff"/> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> </shape>--> <!--為了讓TabLayout內(nèi)部的Tab有間隔,暫時找不到其他設(shè)置方法,只能在背景圖形里面設(shè)置間隔--> <layer-list> <item> <shape> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:left="5dp" android:right="5dp"> <shape> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <solid android:color="#ffffff"/> </shape> </item> </layer-list> </item> <item android:state_selected="false"> <!--<shape> <solid android:color="#bcbcbc"/> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> </shape>--> <layer-list> <item> <shape> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:left="5dp" android:right="5dp"> <shape> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <solid android:color="#bcbcbc"/> </shape> </item> </layer-list> </item> </selector>
注釋掉的地方是原來沒間隔的selector,這里直接給背景設(shè)置了個左右的padding,效果杠杠的。
缺點(diǎn):如果間隔過大的話,那這種方式就有一點(diǎn)的缺陷了,就是點(diǎn)擊到空白處,也能選中tab。
不過對于間隔不是很大的,基本是感覺不出來的。
三、Activity的使用就很簡單了:
TabLayout mTabLayout = (TabLayout) findViewById(R.id.tl_download_tabs); mTabLayout.addTab(mTabLayout.newTab().setText("已下載")); mTabLayout.addTab(mTabLayout.newTab().setText("下載中")); mTabLayout.setupWithViewPager(mViewPager);
四、原來是線性布局下,放著TabLayout和ViewPager,試著在TabLayout外嵌套多一個RelativeLayout,發(fā)現(xiàn)出來的效果Tab的文字不顯示了,至于網(wǎng)上說的調(diào)換addTab和setupWithViewPager的順序也是坑,可以看到顯示,但是出現(xiàn)了更離譜的情況,前面兩個空白,后面還多了兩個正常的,反正是很奇葩。
最后還是得在Adapter中去處理,把以下方法重寫下就可以了,其實(shí)這樣可能更合理些,至少能保證Tab的數(shù)量和ViewPager的頁數(shù)是一致的。
@Override public CharSequence getPageTitle(int position) { if(position == 0){ return "已下載"; }else if(position == 1){ return "下載中"; } return ""; }
以上這篇基于TabLayout中的Tab間隔設(shè)置方法(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android開發(fā)實(shí)現(xiàn)去除bitmap無用白色邊框的方法示例
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)去除bitmap無用白色邊框的方法,結(jié)合實(shí)例形式給出了Android去除bitmap無用白色邊框的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11使用flutter的showModalBottomSheet遇到的坑及解決
這篇文章主要介紹了使用flutter的showModalBottomSheet遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Android實(shí)現(xiàn)讀寫JSON數(shù)據(jù)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)讀寫JSON數(shù)據(jù)的方法,以完整實(shí)例形式分析了Android解析及生成json數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10android6.0權(quán)限動態(tài)申請框架permissiondispatcher的方法
下面小編就為大家分享一篇android6.0權(quán)限動態(tài)申請框架permissiondispatcher的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android使用selector修改TextView中字體顏色和背景色的方法
這篇文章主要介紹了Android使用selector修改TextView中字體顏色和背景色的方法,實(shí)例分析了selector方法的相關(guān)使用技巧,需要的朋友可以參考下2016-01-01Android字符串資源文件format方法使用實(shí)例
本文介紹了Android的資源文件values/strings.xml中如何實(shí)現(xiàn)格式化字符串,這里舉個簡單的例子供大家參考2013-11-11ViewDragHelper實(shí)現(xiàn)QQ側(cè)滑效果
這篇文章主要為大家詳細(xì)介紹了ViewDragHelper實(shí)現(xiàn)QQ側(cè)滑效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08