android view padding,记一次tablayout的tabView偷偷自带padding的问题
這次故事主人翁還是tablayout,在github看官方demo的時候https://github.com/googlesamples/android-media-controller,效果圖有一個指示器效果,于是我點進去看了代碼,手賤改了一點東西發現了一點問題
1. 官方demo ViewPage指示器效果圖
實現原理也很簡單 使用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屬性就是指示器單個圓的樣式,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">
以上代碼就能實現簡單的位于界面下方居中的viewpager指示器了,如果要選中的圓大一點的效果就
改一下上面
android:innerRadius="0dp"
android:shape="ring"
android:thickness="改成你想要的選中大小"
android:useLevel="false">
我這里改了10dp效果如下
這樣指示器的效果就出來了,很簡單,但是這不是本文的重點。
2. 重點來了,誰限制了我的寬度!
手抖了一下把 選中圓的thickness屬性值改成了100dp結果就出現了很詫異的一幕了,效果圖如下
然后發現虛擬機(限寬為64px)和手機(限寬為72px)這個限制寬度不一致,應該是和分辨率有關的,系統設置的一個默認值。
來fuck源碼看看這是怎么回事!
通過fuck源碼發現居然自己調用了padding賦值語句,官方sample代碼里面xml里面都沒有設置padding啊,繼續fuck
原來在這設置的
在TabView構造函數就調用了setPaddingRelative,而mTabPaddingStart和mTabPaddingEnd僅在TabLayout構造方法里面賦值,但是官方sample代碼里面xml里面都沒有設置mTabPaddingStart和mTabPaddingEnd所有這個是系統默認值。
我們肯定不能讓系統默認值干擾我們指示器的 android:thickness的大小,因此建議在TabLayout聲明的xml中加入
app:tabPaddingStart="選中狀態的android:thickness值/2"
app:tabPaddingEnd="選中狀態的android:thickness值/2"
當然這里選中狀態的android:thickness值/2只是參考,你可以自己設置咯,本文結束
總結
以上是生活随笔為你收集整理的android view padding,记一次tablayout的tabView偷偷自带padding的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 新闻编辑,超机访问:ZO
- 下一篇: android service框架,An