日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android Tablayout 自定義Tab布局的使用案例

瀏覽:142日期:2022-09-22 17:43:03

開發(fā)公司的項(xiàng)目中需要實(shí)現(xiàn)以下效果圖,需要自定義TabLayout 中的Tab

Android Tablayout 自定義Tab布局的使用案例

Tablayout xml

<android.support.design.widget.TabLayout android: android:layout_width='wrap_content' android:layout_height='wrap_content' app:tabIndicatorHeight='0dp' android:paddingLeft='@dimen/commom_margin_20' app:tabMode='scrollable' app:tabPaddingStart='@dimen/commom_margin_5' app:tabPaddingEnd='@dimen/commom_margin_5' app:tabSelectedTextColor='@color/common_tv_dark_red' />

其中如果多個(gè)tab 需要滾動(dòng)則要設(shè)置app:tabMode='scrollable',對于tabPaddingStart與tabPaddingEnd則是設(shè)置Tab 的左邊和右邊padding,根據(jù)具體的需求來設(shè)置就好,這里如果沒有設(shè)置,TabLayout 或自動(dòng)設(shè)置一個(gè)默認(rèn)的值?Tab,

setCustomView()

設(shè)置自定義的Tab布局?Tablayout

TabLayout.Tab tab = tabLayout.newTab(); View view = LayoutInflater.from(context).inflate(R.layout.widget_choose_icon_tab_bg, null); TextView tv = (TextView) view.findViewById(R.id.choose_icon_tab_tv); tv.setText(listData.get(i).getName()); tab.setCustomView(view); tabLayout.addTab(tab);

widget_choose_icon_tab_bg.xml

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='wrap_content' android:layout_height='wrap_content' android:orientation='vertical'> <TextView android: android:layout_width='match_parent' android:layout_height='match_parent' android:layout_gravity='center' android:background='@drawable/selector_icon_choose_txt_bg' android:padding='@dimen/commom_margin_4' android:textSize='@dimen/commom_tv_size_12' android:textStyle='bold' /></LinearLayout>

selector_icon_choose_txt_bg

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item android:drawable='@drawable/shape_icon_choose_select' android:state_checked='true' /> <item android:drawable='@drawable/shape_icon_choose_select' android:state_selected='true' /> <item android:drawable='@drawable/shape_icon_choose_no_select' /></selector>

shape_icon_choose_select

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android'> <corners android:radius='@dimen/commom_margin_2'/> <stroke android:color='@color/common_bg_dali_gray_cc4' android: /></shape>

shape_icon_choose_no_select

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android'> <corners android:radius='@dimen/commom_margin_2'/> <stroke android:color='@color/common_bg_dali_gray_62' android: /></shape>

通過以上設(shè)置,就實(shí)現(xiàn)了我圖中TabLayout 的子Tab的布局。。

補(bǔ)充知識(shí):Android TabLayout布局自帶的padding和height問題

TabLayout布局自帶的屬性

最近用TabLayout,發(fā)現(xiàn)設(shè)置簡單的CustomView之后,有一些奇怪的邊距。并不是按照你預(yù)想的那樣。

fucking source code發(fā)現(xiàn)了兩個(gè)要注意的地方。

(1) Tab默認(rèn)自帶橫向邊距問題

Android Tablayout 自定義Tab布局的使用案例

如上圖,看到我就給了一個(gè)簡單的View,結(jié)果上下左右全都多了邊距。

跟源碼發(fā)現(xiàn),是mTabPaddingStart和mTabPaddingEnd在初始化的時(shí)候,會(huì)自動(dòng)給一個(gè)默認(rèn)值。

mTabPaddingStart = a.getDimensionPixelSize(R.styleable.TabLayout_tabPaddingStart,mTabPaddingStart); mTabPaddingTop = a.getDimensionPixelSize(R.styleable.TabLayout_tabPaddingTop,mTabPaddingTop); mTabPaddingEnd = a.getDimensionPixelSize(R.styleable.TabLayout_tabPaddingEnd,mTabPaddingEnd); mTabPaddingBottom = a.getDimensionPixelSize(R.styleable.TabLayout_tabPaddingBottom,mTabPaddingBottom);

解決辦法就是顯示設(shè)置這兩個(gè)屬性:

<android.support.design.widget.TabLayout android:layout_width='wrap_content' android:layout_height='wrap_content' app:tabPaddingStart='0dp' app:tabPaddingEnd='0dp'

(2)高度設(shè)置問題

如上面我的xml,這樣設(shè)置后發(fā)現(xiàn)上下總是比我設(shè)置的要多一些高度height。

讀源碼發(fā)現(xiàn),原來是高度也會(huì)有默認(rèn)值的情況。TabLayout.onMeasure方法:

final int idealHeight = dpToPx(getDefaultHeight()) + getPaddingTop() + getPaddingBottom(); switch (MeasureSpec.getMode(heightMeasureSpec)) { case MeasureSpec.AT_MOST: heightMeasureSpec = MeasureSpec.makeMeasureSpec( Math.min(idealHeight, MeasureSpec.getSize(heightMeasureSpec)), MeasureSpec.EXACTLY);

可以看到,如果在xml里對布局的高度height用wrap_content,一般就進(jìn)入這個(gè)MeasureSpec.AT_MOST的判斷,而且Math.min這句取的最小值,一般會(huì)取到idealHeight的值,因?yàn)閔eightMeasureSpec對應(yīng)的height是父控件的高度,一般會(huì)大一點(diǎn)。

而這個(gè)idealHeight對應(yīng)的是:

private static final int DEFAULT_HEIGHT = 48; // dps

所以,當(dāng)你自定義的customView比這個(gè)值小,那系統(tǒng)會(huì)用這個(gè)默認(rèn)理想高度idealHeight就會(huì)讓實(shí)際的tabLayout高度比想要的大一點(diǎn)。

注意,這一切的前提是對TabLayout使用了customView。

以上這篇Android Tablayout 自定義Tab布局的使用案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩a区| 日韩精品亚洲专区在线观看| 国产日韩精品视频一区二区三区| 久久香蕉精品| 中文在线不卡| 视频一区在线视频| 综合亚洲视频| 亚洲精品麻豆| 欧美精品影院| 蜜桃免费网站一区二区三区| 蜜桃视频一区二区| 日韩av资源网| 久久狠狠亚洲综合| 欧美极品中文字幕| 精品国产乱码久久久久久1区2匹| 国产伊人久久| 国产一区二区三区日韩精品| 精品伊人久久久| 97精品视频在线看| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 欧美一级二区| 国产亚洲欧美日韩在线观看一区二区 | 一区二区小说| 亚洲深夜av| 欧美视频久久| 久久精品亚洲| 国产 日韩 欧美一区| 99久久精品费精品国产| 中文日韩欧美| 国产日产一区| а√天堂8资源中文在线| 久久免费国产| 亚洲五月综合| 国产极品久久久久久久久波多结野| 国产一区一一区高清不卡| 天堂资源在线亚洲| 日韩综合一区二区三区| 欧美91在线| 日韩精品免费一区二区在线观看| 夜久久久久久| 日韩av一区二区三区四区| 国产suv精品一区二区四区视频| re久久精品视频| 国产欧美三级| 亚洲午夜精品久久久久久app| 六月天综合网| 国精品产品一区| 99日韩精品| 久久不卡国产精品一区二区| av高清一区| 日韩专区视频网站| 波多视频一区| 日韩在线成人| 桃色一区二区| 日本不卡高清| 欧美日韩国产观看视频| 中文字幕视频精品一区二区三区| 黄色精品视频| 中文字幕一区二区三区在线视频| 精品72久久久久中文字幕| 日韩一区精品视频| 97在线精品| 天海翼精品一区二区三区| 日韩欧美二区| 久久激情综合网| 好吊一区二区三区| 久久女人天堂| 天堂va在线高清一区| 99精品视频在线| 国产精久久久| 性色av一区二区怡红| 精品国产不卡一区二区| 亚洲影院天堂中文av色| 日韩和的一区二在线| 青青国产91久久久久久| 亚洲高清av| 久久午夜影院| 亚洲精品成人一区| 亚洲精品99| 色婷婷色综合| 日韩va欧美va亚洲va久久| 日韩一区二区免费看| 亚洲欧洲美洲av| 国产一区 二区| 免播放器亚洲| 色偷偷偷在线视频播放| 国产剧情一区| 亚洲三级视频| 午夜欧美理论片| 日韩二区三区在线观看| 久久99伊人| 久久一区二区三区电影| 国际精品欧美精品| 国产日本亚洲| 日韩区一区二| 蜜桃视频一区二区三区 | 亚洲自啪免费| 天堂资源在线亚洲| 精品午夜av| 国产精品夜夜夜| 四虎精品一区二区免费| 午夜一级久久| 在线综合欧美| 最新日韩av| 欧美福利专区| 91精品一区二区三区综合在线爱| 久久久久久久欧美精品| 久久不见久久见免费视频7| 亚洲精品进入| 久久av在线| 香蕉精品视频在线观看| 九九精品调教| 欧美成a人国产精品高清乱码在线观看片在线观看久| 国产精品大片| 国产亚洲精品精品国产亚洲综合| 国产毛片一区| 午夜久久黄色| 伊人久久高清| 九九色在线视频| 中文另类视频| 99久久九九| 秋霞影院一区二区三区| 中文字幕一区久| 婷婷综合六月| 欧美日韩中文一区二区| 91精品啪在线观看国产18 | 中文视频一区| 亚洲在线观看| 羞羞答答国产精品www一本| 麻豆亚洲精品| 男女性色大片免费观看一区二区 | 免费国产自久久久久三四区久久 | 99久久久久| 亚洲成人日韩| 亚洲一区二区三区高清| 影音先锋久久精品| 亚洲毛片一区| 一区二区不卡| 88久久精品| 国产精品日本一区二区三区在线 | 亚洲精品极品少妇16p| 国产日韩综合| 亚洲精品一二三**| 国产精品探花在线观看| 精品一区二区三区的国产在线观看| 黄色精品视频| 999久久久精品国产| 婷婷综合社区| 综合欧美精品| 日本综合精品一区| 国产日韩欧美中文在线| 精品久久久网| 婷婷综合社区| 日本不卡一区二区三区| 国产女人18毛片水真多18精品| 国产高清日韩| 神马午夜久久| 日韩午夜黄色| 91麻豆精品| av资源亚洲| 久久亚洲风情| 国产精品毛片久久久| 日韩伦理福利| 亚洲理论在线| 国产日韩中文在线中文字幕 | 国产精品一区二区美女视频免费看 | 亚洲在线电影| 国产欧美一区二区三区国产幕精品 | 制服诱惑一区二区| 国产亚洲人成a在线v网站| 日韩欧美不卡| 午夜一级在线看亚洲| 国产精品白丝av嫩草影院| 91精品韩国| 日本亚洲最大的色成网站www | sm久久捆绑调教精品一区| 国产农村妇女精品一二区| 欧美久久一区二区三区| se01亚洲视频 | 国产精品国产三级在线观看| 99精品在线观看| 国产图片一区| 特黄特色欧美大片| 日韩精品导航| 99tv成人| 国产日韩三级| 亚洲经典在线| 成人精品视频| 亚洲精品看片| 99久久精品国产亚洲精品| 日韩激情视频网站| 久久久久蜜桃| 国产欧美日韩视频在线| 蜜臀av免费一区二区三区| 国产麻豆一区二区三区精品视频| 亚洲h色精品| 国产精品porn| 婷婷亚洲五月色综合| 老司机免费视频一区二区| 亚洲欧美日韩国产一区|