6.0--TabLayout使用介紹(1)

1.TabLayout基本介紹

TabLayout是安卓6.0推出的币狠,可以替代 ViewPagerIndicator 的一個(gè)控件徐鹤,存放在 design 包下丈屹,繼承自 HorizontalScrollView 藕漱。使用的時(shí)候需要先導(dǎo)入 android.support.design.widget 包锅劝。

2. TabLaout的使用介紹

(1). 單獨(dú)使用TabLayout

使用TabLayout的時(shí)候,需要給它添加 Tab , 添加 Tab 的方式有兩種晨横,一種是在代碼中通過(guò) tablayout.new Tab( ) 動(dòng)態(tài)添加洋腮,一種是在xml中通過(guò) TabItem 添加箫柳。具體如下:

1)代碼中動(dòng)態(tài)添加Tab

activity_tablayout_test.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <!--單獨(dú)使用方式1 只在xml中聲明手形,從代碼中添加tab-->
    <android.support.design.widget.TabLayout
        android:id="@+id/tableLayout_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="scrollable">

    </android.support.design.widget.TabLayout>

</LinearLayout>

TabLayoutTestActivity.java 具體使用:

/**
 * Created by CnPeng on 2016/12/7.
 * <p>
 * tablayout的使用示例
 */

public class TabLayoutTestActivity extends AppCompatActivity {
    @Override
    protected void onCreate(
            @Nullable
                    Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tablayout_test);

        initView1();

    }


    /**
     * 代碼中添加TabItem 并實(shí)現(xiàn)監(jiān)聽(tīng)
     */
    private void initView1() {
        TabLayout tablayout = (TabLayout) findViewById(R.id.tableLayout_1);

        for (int i = 0; i < 6; i++) {
            // 創(chuàng)建Tab的同時(shí)設(shè)置tab描述文字以及tab的tag,并添加到tablayout中 . Tab只能用在代碼中悯恍,不能用在xml          
            tablayout.addTab(tablayout.newTab().setText("代碼中定義的" + i + "號(hào)標(biāo)簽").setTag(i));
        }

        tablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                //                tab.setIcon(R.drawable.ic_launcher);
                switch (tab.getTag().toString()) {  //根據(jù)標(biāo)簽做不同的處理
                    case "1":
                        Toast.makeText(TabLayoutTestActivity.this, "1號(hào)被選中了库糠,可以用 fragmentA 替換該頁(yè)面下半部分", Toast
                                .LENGTH_SHORT).show();
                        break;
                    case "2":
                        Toast.makeText(TabLayoutTestActivity.this, "2號(hào)被選中了,可以用 fragmentB 替換該頁(yè)面下半部分", Toast
                                .LENGTH_SHORT).show();
                        break;
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                //                tab.setIcon(null);    //取消Icon時(shí)使用null

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                //                tab.setIcon(R.drawable.ic_launcher);
            }
        });
    }
}

2)布局文件中添加Tab

xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <!--單獨(dú)使用放肆2 在xml中聲明并添加tab
        xml中創(chuàng)建TabItem的時(shí)候只有三個(gè)屬性:layout  icon  text
    -->
    <android.support.design.widget.TabLayout
        android:id="@+id/tableLayout_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/dp20"
        app:tabMode="scrollable">

        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="xml中定義 0號(hào)標(biāo)簽"/>
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="xml中定義 1號(hào)標(biāo)簽"/>
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="xml中定義 2號(hào)標(biāo)簽"/>
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="xml中定義 3號(hào)標(biāo)簽"/>

    </android.support.design.widget.TabLayout>

</LinearLayout>

代碼中使用:

/**
 * Created by CnPeng on 2016/12/7.
 * <p>
 * tablayout的使用示例
 */

public class TabLayoutTestActivity extends AppCompatActivity {
    @Override
    protected void onCreate(
            @Nullable
                    Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tablayout_test);

        initView2();
    }

    /**
     * xml文件中添加TabItem ,并實(shí)現(xiàn)監(jiān)聽(tīng)
     */
    private void initView2() {
        TabLayout tablayout2 = (TabLayout) findViewById(R.id.tableLayout_2);
        tablayout2.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override   //被選中
            public void onTabSelected(TabLayout.Tab tab) {
                //這里拿到的tab 其實(shí)就是代碼中的tabitem涮毫,但tabitem不能設(shè)置tag,所以瞬欧,還是從代碼中添加tab比較實(shí)用
                switch (tab.getPosition()) {
                    case 0:
                        Toast.makeText(TabLayoutTestActivity.this, "xml中定義的0號(hào)被點(diǎn)擊了", Toast.LENGTH_SHORT).show();
                        break;
                    case 1:
                        Toast.makeText(TabLayoutTestActivity.this, "xml中定義的1號(hào)被點(diǎn)擊了", Toast.LENGTH_SHORT).show();
                        break;


                }
            }

            @Override   //未被選中
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override   //重新被選中
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
    }
}

總結(jié):
A:
在xml布局文件中添加Tab時(shí),只能使用 TabItem , 而且TabItem只有三個(gè)屬性罢防, layout 艘虎, text , icon ; 而 Tab 則只是用在java代碼中,但 Tab 的屬性值和方法更加豐富咒吐,所以野建,實(shí)際使用的時(shí)候属划,推薦使用Tab 在代碼中動(dòng)態(tài)添加

B:

在 TabLayout節(jié)點(diǎn)中,定義了app:tabMode="scrollable" 候生,這個(gè) tabMode 表示tab的排列方式同眯,有兩個(gè)取值:

  • scrollable表示tab過(guò)多超出屏幕寬度時(shí),一直橫著往外排列唯鸭,然后滾動(dòng)可以查看须蜗;
  • fixed表示TabLayout的最大寬度滿屏,各Tab寬度均分目溉。當(dāng) tab 過(guò)多超出屏幕寬度時(shí)明肮,會(huì)擠吧一下 ;
  • 如果不設(shè)置,默認(rèn)fixed缭付。

具體下過(guò)參考下圖:


TabMode 的兩種取值模式的效果差異
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晤愧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛉腌,更是在濱河造成了極大的恐慌官份,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烙丛,死亡現(xiàn)場(chǎng)離奇詭異舅巷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)河咽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)钠右,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人忘蟹,你說(shuō)我怎么就攤上這事飒房。” “怎么了媚值?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵狠毯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我褥芒,道長(zhǎng)嚼松,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任锰扶,我火速辦了婚禮献酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坷牛。我一直安慰自己罕偎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布京闰。 她就那樣靜靜地躺著颜及,像睡著了一般痴怨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上器予,一...
    開(kāi)封第一講書(shū)人閱讀 52,874評(píng)論 1 314
  • 那天浪藻,我揣著相機(jī)與錄音,去河邊找鬼乾翔。 笑死爱葵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的反浓。 我是一名探鬼主播萌丈,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼雷则!你這毒婦竟也來(lái)了辆雾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤月劈,失蹤者是張志新(化名)和其女友劉穎度迂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猜揪,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惭墓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了而姐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腊凶。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拴念,靈堂內(nèi)的尸體忽然破棺而出钧萍,到底是詐尸還是另有隱情,我是刑警寧澤政鼠,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布风瘦,位于F島的核電站,受9級(jí)特大地震影響缔俄,放射性物質(zhì)發(fā)生泄漏弛秋。R本人自食惡果不足惜器躏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一俐载、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧登失,春花似錦遏佣、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)意敛。三九已至,卻和暖如春膛虫,著一層夾襖步出監(jiān)牢的瞬間草姻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工稍刀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撩独,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓账月,卻偏偏與公主長(zhǎng)得像综膀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子局齿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容