Android(安卓)Studio FragmentTabHost使用
16lz
2021-01-26
综述
早期的TabHost被废弃,因此使用新的FragmentTabHost代替TabHost
使用TabHost时,在TabActivity中将Activity作为tab加入TabHost即可
使用FragmentTabHost时使用的是FragmentActivity中容纳多个Fragment
FragmentTabHost使用时需要加入v4包,在Eclipse中需要人工导入v4包,AndroidStudio本身自己有v4包,再导入会导致v4包冲突
FragmentTabHost的布局编写:
- FrameLayout:真正容纳底部标签的布局。
- FragmentTabHost:id使用系统id,tabHost
- TabWeight:固定的不知道有什么意思。id使用系统id,tabs
- FrameLayout:要求必须按照这种格式写,否则会报错。使用系统id,tabcontent
我们之所以需要在上方加一个FrameLayout的目的是让切换标签放在下方,如果直接使用的下面的结构的话,标签项会出现在界面上方。
FragmentTabhost使用的主界面程序编写,继承FragmentActivity
1、找到FragmentTabHost:通过findViewById(android.R.id.tabhost)
2、初始化FragmentTabHost:通过setup函数,参数传入context,getSupportFragmentManager(),以及自己真正的标签容器。
3、添加Tab三步:
①创建Tab:tabHost.newTabSpec(String tag);该tag可以用来找到Fragment
②设置标签:tabSpec.setIndicator(View v);这里一般使用组合控件,一般情况下标签包括文字以及图片两个部分。
③添加Tab:tabHost.addTab(tabSpec, MyFragment.class, Bundle bundle);第二个参数是对应需要添加的Fragment,bundle是chuanruFragment的参数,不需要时填入null;该参数可以在Fragment中的onCreateView中通过Bundle bundle = this.getArguments()获取。
Fragment的编写
很多情况下我们会是从Activity改为Fragment,在Fragment中主要函数有两个,onCreateView中可以通过填充布局实现界面布局,在onViewCreated中可以通过findViewById找到对应的控件。
getActivity函数可以获取该Fragment对应的FragmentActivity,getActivity.getApplicationContext可以获取上下文。
在startActivityForResult时,返回结果操作只能通过FragmentActivity来处理,有FragmentActivity辨别后返回给对应的Fragment处理。
更多相关文章
- Android(安卓)自定义TextView实现宫格布局,Drawable添加图片并控
- Android(安卓)SearchView 焦点问题
- Android(安卓)应用布局文件的命名规则
- Android(安卓)录音实现方法、仿微信语音、麦克风录音、发送语音
- android ListView添加事件并获取选中项的值
- 01-android快速入门
- Xamarin.Android(安卓)自定义VideoView 进度条
- android 中findViewById()为null的可能原因
- 关于Android布局中键盘遮挡问题