Android TabLayout 設(shè)置Indicator 圓角樣式和寬度幾種方式

寫在前面:本文僅個人開發(fā)時遇到的問題及個人解決辦法的記錄。

項目編譯版本:buildToolsVersion:"30.0.1"

新項目有使用到com.google.android.material下的TabLayout,在設(shè)計師的設(shè)計稿中,TabLayout的Indicator是固定長度的,而且比每個Tab的長度還要短,因此找了很多博客看,總結(jié)大概就是幾種方法。

一、使用反射修改,這里就不貼代碼了,百度和Google搜索一大堆。

? ? ? ? 使用反射這里不能說它有問題,因為在很多系統(tǒng)版本的手機都能使用。但是在29及以上的系統(tǒng)中,谷歌對反射的使用就限制比較嚴(yán)格,而且在28版本的時候還對內(nèi)部的方法名修改過一次。通過反射雖然可以實現(xiàn),但我個人覺得反射不夠優(yōu)雅,并且它有可能因為 SDK 的升級而失效。但這不失為當(dāng)前解決這個問題的一個方法。

二、自定義 Tab

? ? ? ??TabLayout 中的 Tab 是允許自定義的,但 Indicator 不屬于 Tab。所以有這樣一種解決方案,把 Indicator 隱藏掉,然后在自定義 Tab 的布局中加入指示線。我們可以通過把 Indicator 的顏色設(shè)為透明來隱藏它:

app:tabIndicatorColor="@android:color/transparent"

而自定義Tab就是由于在Tab中有這樣一個方法:tab.setCustomView();我們只需要自定義一個布局,在布局里面添加指示器,

然后可以使用這兩種方式:

tab.setCustomView(view);

或者 tab.setCustomView(R.layout.home_bottom_button);把布局傳遞給Tab,然后在

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){})方法的listener中控制指示器顯示和隱藏(OnTabSelectedListener有三個方法)

但是這樣用的話就沒有滑動切換的動畫效果。

三、使用 Drawable 樣式(使用華為手機SDK為28的可以,19的模擬器不可以)

? ? ? ? 我自己使用的是這種方式。簡單省事,還沒那么麻煩。

??具體的借鑒參考了這篇文章:https://blog.csdn.net/u011106915/article/details/106116711? ??

提示:要把下面兩個都設(shè)置上,而且drawable中的顏色和下面設(shè)置的顏色要一致。不然有可能部分手機會無效或者下面設(shè)置的tabIndicatorColor覆蓋上面Drawable中的顏色

app:tabIndicator="@drawable/life_home_tab_indicator"

app:tabIndicatorColor="#ff080808"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容