最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tablayout簡(jiǎn)單使用方法總結(jié)

 更新時(shí)間:2017年12月04日 11:16:37   作者:ZhengJiaoCsdn  
這篇文章主要為大家詳細(xì)總結(jié)了Tablayout的簡(jiǎn)單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了Tablayout簡(jiǎn)單的使用方法,供大家參考,具體內(nèi)容如下

一、TabLayout普通用法

在項(xiàng)目中使用viewpager的時(shí)候大多數(shù)都是和TabPagerIndicator結(jié)合使用,TabPagerIndicator是第三方的,使用起來(lái)比較繁瑣;

2015谷歌大會(huì)官方發(fā)布了TabLayout,可以很簡(jiǎn)單很完美的實(shí)現(xiàn)這種效果;

因?yàn)槭枪俜桨l(fā)布的,所以使用起來(lái)不用任何第三方的東西;而且非常簡(jiǎn)單明了;

同樣,如果想要使用Tablayout必須在build中配置:

dependencies { 
 compile 'com.android.support:design:23.1.1' 
} 

先看下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:app="http://schemas.android.com/apk/res-auto" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical" 
 tools:context="www.tablayout.com.tablayoutdemo.MainActivity"> 
 
 <!-- 
 app:tabIndicatorColor="@color/white" // 下方滾動(dòng)的下劃線(xiàn)顏色 
 app:tabSelectedTextColor="@color/gray" // tab被選中后,文字的顏色 
 app:tabTextColor="@color/white" // tab默認(rèn)的文字顏色 
 app:tabMode="scrollable" //設(shè)置標(biāo)題滑動(dòng)模式 
 --> 
 <android.support.design.widget.TabLayout 
 android:id="@+id/tablayout" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:background="@android:color/holo_blue_light" 
 app:tabIndicatorColor="@android:color/holo_red_dark" 
 app:tabSelectedTextColor="@android:color/holo_red_dark" 
 app:tabTextColor="@android:color/background_dark" 
 app:tabMode="scrollable" 
 /> 
 
 <android.support.v4.view.ViewPager 
 android:id="@+id/viewpager" 
 android:layout_width="match_parent" 
 android:layout_height="0dp" 
 android:layout_weight="1" /> 
 
</LinearLayout>

代碼使用起來(lái)也非常簡(jiǎn)單

第一步:初始化ViewPager并設(shè)置adapter
第二步:給Tablayout設(shè)置標(biāo)題
第三步:將Tablayout和ViewPager關(guān)聯(lián)到一起

//第一步:初始化ViewPager并設(shè)置adapter 
 viewPager = (ViewPager) findViewById(R.id.viewpager); 
 viewPager.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager(), fragmentList)); 
 
 //第二步:初始化Tablayout,給ViewPager設(shè)置標(biāo)題(選項(xiàng)卡) 
 tabLayout = (TabLayout) findViewById(R.id.tablayout); 
 
 tabLayout.addTab(tabLayout.newTab().setText("UFC"));//添加tab選項(xiàng)卡 
 tabLayout.addTab(tabLayout.newTab().setText("武林風(fēng)")); 
 tabLayout.addTab(tabLayout.newTab().setText("昆侖決")); 
 tabLayout.addTab(tabLayout.newTab().setText("榮耀")); 
 tabLayout.addTab(tabLayout.newTab().setText("勇士的崛起")); 
 tabLayout.addTab(tabLayout.newTab().setText("K-1")); 
 
 //第三步:關(guān)聯(lián)ViewPager 
 tabLayout.setupWithViewPager(viewPager); 

好了,正常情況下就到此結(jié)束了,但是我在寫(xiě)這個(gè)demo的時(shí)候碰到一個(gè)坑:
標(biāo)題死活顯示不出來(lái),浪費(fèi)了很長(zhǎng)時(shí)間,最后在Tablayout關(guān)聯(lián)Viewpager之后添加從新設(shè)置下標(biāo)題即可:

//在關(guān)聯(lián)ViewPager之后添加如下代碼,前三步不用更改 
 tabLayout.getTabAt(0).setText("UFC"); 
 tabLayout.getTabAt(1).setText("武林風(fēng)"); 
 tabLayout.getTabAt(2).setText("昆侖決"); 
 tabLayout.getTabAt(3).setText("榮耀"); 
 tabLayout.getTabAt(4).setText("勇士的崛起"); 
 tabLayout.getTabAt(5).setText("K-1"); 

總體來(lái)說(shuō)Tablayout完全可以代替TabPagerIndicator,而且使用起來(lái)比較簡(jiǎn)單,最重要的還是官方的;


二、Tablayout下劃線(xiàn)寬度更改方法:

首先說(shuō)明:Google官方?jīng)]有給我們提供更改下劃線(xiàn)的寬度的方法;
我們可以通過(guò)其他方法更改:(兩步)
1.首先定義setIndicator()方法

public void setIndicator(TabLayout tabs,int leftDip,int rightDip){ 
 Class<?> tabLayout = tabs.getClass(); 
 Field tabStrip = null; 
 try { 
 tabStrip = tabLayout.getDeclaredField("mTabStrip"); 
 } catch (NoSuchFieldException e) { 
 e.printStackTrace(); 
 } 
 
 tabStrip.setAccessible(true); 
 LinearLayout llTab = null; 
 try { 
 llTab = (LinearLayout) tabStrip.get(tabs); 
 } catch (IllegalAccessException e) { 
 e.printStackTrace(); 
 } 
 
 int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, leftDip, Resources.getSystem().getDisplayMetrics()); 
 int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightDip, Resources.getSystem().getDisplayMetrics()); 
 
 for (int i = 0; i < llTab.getChildCount(); i++) { 
 View child = llTab.getChildAt(i); 
 child.setPadding(0, 0, 0, 0); 
 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1); 
 params.leftMargin = left; 
 params.rightMargin = right; 
 child.setLayoutParams(params); 
 child.invalidate(); 
 } 
} 

2.在關(guān)聯(lián)ViewPager之前添加

tabLayout.post(new Runnable() { 
 @Override 
 public void run() { 
 setIndicator(tabLayout,25,25); 
 } 
 }); 

最后記得更改滑動(dòng)方式:   app:tabMode="fixed"
左右距離可根據(jù)自己項(xiàng)目設(shè)置;(更改下劃線(xiàn)寬度需在第一步(Tablayout普通用法)的基礎(chǔ)上更改使用)

三、更改標(biāo)簽對(duì)齊方式

在xml文件中:
刪除 app:tabMode="" ;
添加 app:tabGravity="center" ;
還可以通過(guò)   app:tabMaxWidth="150dp"  限制標(biāo)簽寬度
(更改更改標(biāo)簽對(duì)齊方式需在第一步(Tablayout普通用法)的基礎(chǔ)上更改使用)

四、標(biāo)題之間添加分割線(xiàn);

1.在drawable文件夾下創(chuàng)建 shape

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
 <solid android:color="#aa00ff00" /> 
 <size android:width="1dp"/> 
</shape> 

2,在主類(lèi)設(shè)置完tablayout后添加如下代碼:

LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); 
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); 
linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); 
linearLayout.setDividerPadding(15); 

點(diǎn)擊打開(kāi)鏈接免費(fèi)下載源碼

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Flutter做桌上彈球(繪圖(Canvas&CustomPaint)API)

    用Flutter做桌上彈球(繪圖(Canvas&CustomPaint)API)

    這篇文章主要介紹了用Flutter做桌上彈球 聊聊繪圖(Canvas&CustomPaint)API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Android中WindowManager與WMS的解析

    Android中WindowManager與WMS的解析

    今天小編就為大家分享一篇關(guān)于Android中WindowManager與WMS的解析,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件

    這篇文章主要為大家詳細(xì)介紹了Android存儲(chǔ)字符串?dāng)?shù)據(jù)到txt文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android?jar庫(kù)源碼Bolts原理解析

    Android?jar庫(kù)源碼Bolts原理解析

    這篇文章主要介紹了Android?jar庫(kù)源碼Bolts原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Android中點(diǎn)擊按鈕啟動(dòng)另一個(gè)Activity及Activity之間傳值問(wèn)題

    Android中點(diǎn)擊按鈕啟動(dòng)另一個(gè)Activity及Activity之間傳值問(wèn)題

    這篇文章主要介紹了Android中點(diǎn)擊按鈕啟動(dòng)另一個(gè)Activity及Activity之間傳值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Flutter實(shí)戰(zhàn)之自定義日志打印組件詳解

    Flutter實(shí)戰(zhàn)之自定義日志打印組件詳解

    這篇文章主要介紹了Flutter實(shí)戰(zhàn)之自定義日志打印組件詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Android中使用CircleImageView和Cardview制作圓形頭像的方法

    Android中使用CircleImageView和Cardview制作圓形頭像的方法

    這篇文章主要介紹了Android中使用CircleImageView和Cardview制作圓形頭像的方法,簡(jiǎn)單介紹了CircleImageView和Cardview的使用,需要的朋友可以參考下
    2016-09-09
  • Android自定義相機(jī)Camera實(shí)現(xiàn)手動(dòng)對(duì)焦的方法示例

    Android自定義相機(jī)Camera實(shí)現(xiàn)手動(dòng)對(duì)焦的方法示例

    這篇文章主要介紹了Android自定義相機(jī)Camera實(shí)現(xiàn)手動(dòng)對(duì)焦的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Android 多渠道打包詳細(xì)

    Android 多渠道打包詳細(xì)

    這篇文章主要介紹了Android 打包類(lèi)型,主要有命令行打包、IDE 打包、編譯器打包,若對(duì)此內(nèi)容感興趣的話(huà),請(qǐng)繼續(xù)閱讀下文
    2021-09-09
  • Android 5.0 開(kāi)機(jī)橫屏修改方法

    Android 5.0 開(kāi)機(jī)橫屏修改方法

    這篇文章主要介紹了 Android 5.0 開(kāi)機(jī)橫屏修改方法,大概可以分為三部分,具體修改方法,大家參考下本文
    2017-01-01

最新評(píng)論

昌宁县| 河南省| 长顺县| 密山市| 岢岚县| 福贡县| 同江市| 武宁县| 马尔康县| 唐海县| 全椒县| 安溪县| 彰武县| 藁城市| 威远县| 夏津县| 崇仁县| 明溪县| 常山县| 新沂市| 城固县| 荥经县| 天津市| 宁安市| 威远县| 汽车| 张北县| 鹤壁市| 修文县| 皮山县| 杂多县| 萝北县| 洪江市| 龙里县| 枣强县| 宁都县| 兴山县| 平远县| 社旗县| 新密市| 柏乡县|