日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android view padding,记一次tablayout的tabView偷偷自带padding的问题

發(fā)布時(shí)間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android view padding,记一次tablayout的tabView偷偷自带padding的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這次故事主人翁還是tablayout,在github看官方demo的時(shí)候https://github.com/googlesamples/android-media-controller,效果圖有一個(gè)指示器效果,于是我點(diǎn)進(jìn)去看了代碼,手賤改了一點(diǎn)東西發(fā)現(xiàn)了一點(diǎn)問題

1. 官方demo ViewPage指示器效果圖

實(shí)現(xiàn)原理也很簡單 使用tablayout,核心代碼片段如下

代碼中綁定tablayout和viewpager

final TabLayout pageIndicator = findViewById(R.id.page_indicator);

pageIndicator.setupWithViewPager(mViewPager);

android:id="@+id/page_indicator"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="bottom"

android:background="@android:color/transparent"

app:tabBackground="@drawable/tab_indicator"

app:tabGravity="center"

app:tabIndicatorHeight="0dp" />

tabBackground屬性就是指示器單個(gè)圓的樣式,drawable/tab_indicator代碼如下

android:innerRadius="0dp"

android:shape="ring"

android:thickness="3dp"

android:useLevel="false">

android:innerRadius="0dp"

android:shape="ring"

android:thickness="3dp"

android:useLevel="false">

以上代碼就能實(shí)現(xiàn)簡單的位于界面下方居中的viewpager指示器了,如果要選中的圓大一點(diǎn)的效果就

改一下上面

android:innerRadius="0dp"

android:shape="ring"

android:thickness="改成你想要的選中大小"

android:useLevel="false">

我這里改了10dp效果如下

這樣指示器的效果就出來了,很簡單,但是這不是本文的重點(diǎn)。

2. 重點(diǎn)來了,誰限制了我的寬度!

手抖了一下把 選中圓的thickness屬性值改成了100dp結(jié)果就出現(xiàn)了很詫異的一幕了,效果圖如下

然后發(fā)現(xiàn)虛擬機(jī)(限寬為64px)和手機(jī)(限寬為72px)這個(gè)限制寬度不一致,應(yīng)該是和分辨率有關(guān)的,系統(tǒng)設(shè)置的一個(gè)默認(rèn)值。

來fuck源碼看看這是怎么回事!

通過fuck源碼發(fā)現(xiàn)居然自己調(diào)用了padding賦值語句,官方sample代碼里面xml里面都沒有設(shè)置padding啊,繼續(xù)fuck

原來在這設(shè)置的

在TabView構(gòu)造函數(shù)就調(diào)用了setPaddingRelative,而mTabPaddingStart和mTabPaddingEnd僅在TabLayout構(gòu)造方法里面賦值,但是官方sample代碼里面xml里面都沒有設(shè)置mTabPaddingStart和mTabPaddingEnd所有這個(gè)是系統(tǒng)默認(rèn)值。

我們肯定不能讓系統(tǒng)默認(rèn)值干擾我們指示器的 android:thickness的大小,因此建議在TabLayout聲明的xml中加入

app:tabPaddingStart="選中狀態(tài)的android:thickness值/2"

app:tabPaddingEnd="選中狀態(tài)的android:thickness值/2"

當(dāng)然這里選中狀態(tài)的android:thickness值/2只是參考,你可以自己設(shè)置咯,本文結(jié)束

總結(jié)

以上是生活随笔為你收集整理的android view padding,记一次tablayout的tabView偷偷自带padding的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。