66b52468c121889b900d4956032f1009.png

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 一些常用的属性1

2

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);

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐