android实现顶部tab切换,Android TabLayout+ViewPager实现顶部页面切换
8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?实现效果:1、导入依赖TabLayout属于Material Design中的控件,所以需要添加依赖1compile 'com.android.support:design:26.0.0'2、布局文件顶部为TabLayout,底部为ViewPager12345678910111213141516171819android.
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
实现效果:
1、导入依赖
TabLayout属于Material Design中的控件,所以需要添加依赖1compile 'com.android.support:design:26.0.0'
2、布局文件
顶部为TabLayout,底部为ViewPager1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="45dp"
android:id="@+id/tab_law"
app:tabSelectedTextColor="@color/yellow_deep"
app:tabIndicatorColor="@color/yellow_deep"
/>
android:id="@+id/vp_law"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2.1 一些常用的属性12
3
4
5
6
7
8
9
10改变选中字体的颜色
app:tabSelectedTextColor="@android:color/yellow_deep"
改变字体的颜色
app:tabTextColor="@color/colorPrimary"
改变字体指示器颜色
app:tabIndicatorColor="@android:color/yellow_deep"
改变整个Tab颜色
app:tabBackground="color"
改变字体下标的高度(设置为0就是无)
app:tabIndicatorHeight="4dp"
3、Fragment适配器
适配器将Tab与Fragment对应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/**
* Created by lzl on 2018/2/7.
*
*/
public class FragmentAdapter extends FragmentPagerAdapter {
private List fragments;
private List titleString;
public FragmentAdapter(FragmentManager fm, List fragments, List titleString) {
super(fm);
this.fragments = fragments;
this.titleString = titleString;
}
@Override//返回对应的Fragment
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override//返回Tab的数目
public int getCount() {
return titleString.size();
}
@Override//返回Tab的标题
public CharSequence getPageTitle(int position) {
return titleString.get(position);
}
}
5、控件的使用
使用非常简单,找到控件后,添加相应的TAB,这里用的For循环添加,然后创建一个适配器对象,需要传入FragmentManger,这个对象的获取方法有多种,getSupportFragmentManager(),需要继承FragmnetActivity或者AppCompatActivity才能使用这个方法,getFragmentManager()这个方法要使用的控件为app下,v4包的控件不可用,我这里用的是getChildFragmentManager()获取,是因为用getSupportFragmentManager()会出现切换到其他Fragment后无法加载页面。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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62/**
* Created by lzl on 2018/2/7.
*/
public class LawFragment extends Fragment {
private View view;
private TabLayout tl;//不是TableLayout
private ViewPager vp;
private FragmentManager fragmentAdapter;
private List fragments;
private List strings;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.activity_law, container, false);
initView();
return view;
}
private void initView() {
//添加Fragment
tl = view.findViewById(R.id.tab_law);
vp = view.findViewById(R.id.vp_law);
fragments = new ArrayList<>();
fragments.add(new NewsFragment());
fragments.add(new AttentionFragment());
fragments.add(new SpecialFragment());
fragments.add(new ConsultFragment());
//添加Tab文字
strings = new ArrayList<>();
strings.add("闻法");
strings.add("我的关注");
strings.add("专栏");
strings.add("法律咨询");
//添加Tab
for (String str : strings) {
tl.addTab(tl.newTab().setText(str));
}
//绑定ViewPager
FragmentManager fragmentManager = getChildFragmentManager();
//getActivity().getSupportFragmentManager() 会导致切换布局后不能加载
//getFragmentManager() app包用
FragmentAdapter fragmentAdapter = new FragmentAdapter(fragmentManager,fragments,strings);
vp.setAdapter(fragmentAdapter);
tl.setupWithViewPager(vp);//tablayout和viewpager相互关联,并设置tablayout文字
tl.setTabMode(TabLayout.MODE_FIXED);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
更多推荐
所有评论(0)