淘先锋技术网

首页 1 2 3 4 5 6 7

什么是TabLayout

TabLayout是Support Design Library库中的一个控件,它是用来进行分组的,同时也可以作为ViewPager的指示器

TabLayout的简单使用

●tab创建

◇xml布局创建1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

android:layout_width="match_parent"

android:id="@+id/tablayout"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:text="tab1" //设置tab显示的文字

android:icon="@mipmap/ic_launcher" //设置tab的图片

android:layout_height="wrap_content" />

android:layout_width="wrap_content"

android:text="tab2"

android:icon="@mipmap/ic_launcher"

android:layout_height="wrap_content" />

android:layout_width="wrap_content"

android:text="tab3"

android:icon="@mipmap/ic_launcher"

android:layout_height="wrap_content" />

◇Java代码动态创建1

2

3

4tabLayout=findViewById(R.id.tablayout);

tabLayout.addTab(tabLayout.newTab().setText("标签1").setIcon(R.mipmap.ic_launcher));

tabLayout.addTab(tabLayout.newTab().setText("标签2").setIcon(R.mipmap.ic_launcher));

tabLayout.addTab(tabLayout.newTab().setText("标签3").setIcon(R.mipmap.ic_launcher));

b6e061650ba6fe66cd2a98a4d3e0087b.gif

●tab的布局排版

tab的布局排版受两个属性限制app:tabMode【fixed(固定)、scrollable(滚动))】和app:tabGravity(fill(填充)、center(居中))

◇设置app:tabMode=“fixed”然后设置app:tabGravity分别为fill和center时的效果

1)app:tabGravity=”fill”1

2

3

4

5

6

7

android:layout_width="match_parent"

android:id="@+id/tablayout"

app:tabMode="fixed"

app:tabGravity="fill"

android:layout_height="wrap_content">

4029d0b7fab04f57754eaa6a814dfe0a.png

2)app:tabGravity=”center”1

2

3

4

5

6

7

android:layout_width="match_parent"

android:id="@+id/tablayout"

app:tabMode="fixed"

app:tabGravity="center"

android:layout_height="wrap_content">

8e418dc24ce41798bdc5ec53c74dd5a8.png

◇设置app:tabMode=“scrollable”然后设置app:tabGravity分别为fill和center时的效果

1)app:tabGravity=”fill”1

2

3

4

5

6

7

android:layout_width="match_parent"

android:id="@+id/tablayout"

app:tabMode="scrollable"

app:tabGravity="fill"

android:layout_height="wrap_content">

b59c71cd93d6be5f4e75cdc7f1fa7c85.png

2)app:tabGravity=”center”1

2

3

4

5

6

7

android:layout_width="match_parent"

android:id="@+id/tablayout"

app:tabMode="scrollable"

app:tabGravity="center"

android:layout_height="wrap_content">

c09e0376645adadab787a28e7ebf038a.png

●其他设置1

2

3

4

5

6

7

8

9

10

11

12

android:layout_width="match_parent"

android:id="@+id/tablayout"

app:tabMode="scrollable"

app:tabGravity="center"

app:tabIndicatorHeight="5dp" //设置指示线高度,如果想要隐藏指示线可以通过将该属性设置为0dp实现

app:tabIndicatorColor="@color/colorPrimary" //设置指示线颜色

app:tabTextColor="@color/colorPrimary" //设置未选中文字颜色

app:tabSelectedTextColor="@color/colorRed" //设置选中文字颜色

android:layout_height="wrap_content">

619c617a125ddfacda6f1bfe355d902a.gif

●绑定ViewPager

这里tab的Text是通过PagerAdapter的getPageTitle方法获取的1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44public class TabLayoutSimpleActivity2 extends AppCompatActivity{

ViewPager viewPager;

TabLayout tabLayout;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.tablayout_activitysimple);

viewPager=findViewById(R.id.vp);

tabLayout=findViewById(R.id.tablayout);

viewPager.setAdapter(new PagerAdapter() {

@Override

public int getCount(){

return 5;

}

@Override

public boolean isViewFromObject(@NonNull View view, @NonNull Object object){

return view==object;

}

@NonNull

@Override

public Object instantiateItem(@NonNull ViewGroup container, int position){

TextView textView=new TextView(TabLayoutSimpleActivity2.this);

textView.setTextSize(50);

textView.setText(position+"");

container.addView(textView);

return textView;

}

@Override

public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object){

container.removeView((View) object);

}

@Nullable

@Override

public CharSequence getPageTitle(int position){

return "标签"+position;

}

});

tabLayout.setupWithViewPager(viewPager);

}

}

8ee4c7bd662ed7b621bd90695bd9db2e.gif