項目中有個模塊某個頁面需求是兩個tab切換诚隙,剛好上篇文章也是寫的是tablayout+viewpager+fragment問題起胰,自然想到用tablayout來實現(xiàn)久又,UI的效果圖是這樣的。
吧啦吧啦代碼實現(xiàn)了效五,還實現(xiàn)了滑動功能的地消,可效果卻是這樣的。
好吧畏妖,這效果我都不能忍脉执,設(shè)計師肯定不過,于是google了一下戒劫,發(fā)現(xiàn)有 tabGravity這個屬性半夷,默認(rèn)是app:tabGravity="fill",代碼中改為app:tabGravity="center",見效果
嗯迅细,這效果基本上我自己也滿意了巫橄,然后設(shè)計師要要跟我撕逼了,她要的效果上“All products”和“My list”下滑動條長度跟字體長度相適應(yīng)茵典,而我這實現(xiàn)的滑動條都是一樣長的湘换,視覺上不協(xié)調(diào),且這兩個單詞也不是均分位于中間而是都向中間靠攏顯示。好吧彩倚,由于設(shè)計師太能撕逼說服不了她筹我,我開始了自定義tablayout,結(jié)果也是失敗告終。具體原因是滑動條textview都是先addview進去署恍,滑動過程中去取下個textview寬度來動態(tài)改變滑動條長度不好處理崎溃。
于是打算換思路實現(xiàn)。之前的導(dǎo)航欄很多是使用radiogroup實現(xiàn)的盯质。于是我試了試
android:id="@+id/radbtn_all_products"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableBottom="@drawable/layer_list_favorite_tab"
android:button="@null"
android:checked="true"
android:text="@string/all_products"
android:textColor="@drawable/selector_tv_favorite_tab"
android:textSize="16sp"/>
可是可是袁串,他媽做不到滑動條緊緊愛著底邊的,于是于是想到將滑動條作為整體背景android:background="@drawable/layer_list_favorite_tab"而不要android:drawableBottom屬性的呼巷。最終終于實現(xiàn)了UI需要的效果囱修。
在這過程中有兩個小插曲:
1.當(dāng)最后那滑條用backgroud方式實現(xiàn),要設(shè)計師給切圖王悍,然而設(shè)計師又撕逼破镰,說之前也沒切過圖啊,這個你們肯定能不用切圖自己實現(xiàn)压储,好吧鲜漩,我又妥協(xié)了,找代碼怎么實現(xiàn)這種效果,最直接看項目中有沒有現(xiàn)成的了集惋。黃天不負(fù)有心人看到個layer-list類型文件孕似,不是很清楚這是干嘛的,google了下能實現(xiàn)刮刑。
2.用readiogroup實現(xiàn)那個單選時候喉祭,代碼如下因為要radiobutton有背景花條又居中顯示,所以只能采用在Readiogroup和RadioButton中間嵌套層布局雷绢,如下:
<ReadioGroup
? ?<Linarlayout
? ? ? ? <RadioButton
然而問題來了泛烙,readiogroup的監(jiān)聽不起作用,當(dāng)時也是too young以為是其它問題蔽氨,甚至懷疑到as升級到新版本問題帆疟,后來debug監(jiān)聽才發(fā)覺代碼根本沒進來,沒時間折騰只能自己實現(xiàn)互斥監(jiān)聽了坊饶。
ps:其實在自己開發(fā)經(jīng)驗不是特別豐富時候殴蓬,很多時候都是在試錯的過程蟋滴,然后一步步實現(xiàn)它解決它津函。