第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

記一次tablayout的tabView偷偷自帶padding的問(wèn)題

標(biāo)簽:
Android

这次故事主人翁还是tablayout,在github看官方demo的时候https://github.com/googlesamples/android-media-controller,效果图有一个指示器效果,于是我点进去看了代码,手贱改了一点东西发现了一点问题

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

图片描述

代码地址 https://github.com/googlesamples/android-media-controller

实现原理也很简单 使用tablayout,核心代码片段如下
代码中绑定tablayout和viewpager

 final TabLayout pageIndicator = findViewById(R.id.page_indicator);
        pageIndicator.setupWithViewPager(mViewPager);
 <android.support.design.widget.TabLayout
            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代码如下

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true">
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="3dp"
            android:useLevel="false">
                <solid android:color="@color/colorAccent" />
        </shape>
    </item>

    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="3dp"
            android:useLevel="false">
            <solid android:color="@color/colorInactive" />
        </shape>
    </item>
</selector>

以上代码就能实现简单的位于界面下方居中的viewpager指示器了,如果要选中的圆大一点的效果就
改一下上面

 <item android:state_selected="true">
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="改成你想要的选中大小" 
            android:useLevel="false">
                <solid android:color="@color/colorAccent" />
        </shape>
    </item>

我这里改了10dp效果如下
图片描述
这样指示器的效果就出来了,很简单,但是这不是本文的重点。

2. 重点来了,谁限制了我的宽度!

手抖了一下把 选中圆的thickness属性值改成了100dp结果就出现了很诧异的一幕了,效果图如下
图片描述
然后发现虚拟机(限宽为64px)和手机(限宽为72px)这个限制宽度不一致,应该是和分辨率有关的,系统设置的一个默认值。
来fuck源码看看这是怎么回事!
图片描述
通过fuck源码发现居然自己调用了padding赋值语句,官方sample代码里面xml里面都没有设置padding啊,继续fuck
原来在这设置的
图片描述
在TabView构造函数就调用了setPaddingRelative,而mTabPaddingStartmTabPaddingEnd仅在TabLayout构造方法里面赋值,但是官方sample代码里面xml里面都没有设置mTabPaddingStartmTabPaddingEnd所有这个是系统默认值。

我们肯定不能让系统默认值干扰我们指示器的 android:thickness的大小,因此建议在TabLayout声明的xml中加入

app:tabPaddingStart="选中状态的android:thickness值/2"
app:tabPaddingEnd="选中状态的android:thickness值/2"

当然这里选中状态的android:thickness值/2只是参考,你可以自己设置咯,本文结束

點(diǎn)擊查看更多內(nèi)容
7人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開(kāi)發(fā)工程師
手記
粉絲
1萬(wàn)
獲贊與收藏
137

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消