封装UI和代码利器—Fragment(三)
来源:互联网 发布:楚汉争霸java 编辑:程序博客网 时间:2024/06/01 18:47
每天我都会将以前学到的,刚刚学到的知识点整理复习一遍。以便对于这些知识点的理解能够深一些,将来用起来会得心应手一些。好的,废话不多说。
今天我要复习的是如何创建Fragment。创建Fragemnt大概有两种方法。第一种通过XML布局文件创建Fragment,第二种是通过java代码创建Fragment.
(一)通过XML布局文件创建Fragment
在前两期我用的就是这种方法来创建Fragment的。在布局文件中使用<fragment>标签声明Fragment,需要注意的几个属性就是
android:tag 这个属性用于指定一个字符串,是另一种引用Fragment的方法。FragmentManager.findFragmentByTag方法通过android:tag属性值找到Fragment .
android:name 这个属性和class属性的用法完全一样,指定的Fragment类的全名
Fragement 想要显示相关控件时,需要实现Fragment.onCreateView方法,并通过该方法返回Fragment中显示的根试图对象。
(二)通过Java代码创建Fragment
这种是我复习的重点对象,如何通过Java代码动态创建Fragment .首先需要了解与其相关的两个比较重要的类,大家想想在一个宿主窗口上,放着不同的Fragment,为了方便管理,就有了FragmentManager这个类,而另外一个是FragmentTransation类,这个类顾名思义,Transation 这个英文单词是事务的意思,因此主要用于对Fragment执行具体的操作。例如添加Fragment,删除Fragment等等。
上面的代码涉及了三个方法,beginTransation commit add 其中前两个方法用于处理Fragment事务,主要是为提高效率。add方法有三个重载形式
本次只涉及到其中一种
public abstract FragmentTransation add( int containerViewId, Fragment fragment)
第一个参数是绑定的视图容器的ID,FrameLayout 叫堆栈布局,这里不作细讲。第二个参数是Fragment 对象。
下面则是重中之重,尽管前面的代码可以将Framgment添加到视图容器中去,但是Fragment的尺寸和位置的问题没有解决,由于Fragment类并没有设置布局的方法,所以就需要在Fragment.onCreateView方法中创建视图对象的过程中处理。
在前面介绍的inflate方法我们的代码是这样写的
View view =inflater.inflate( R.layout_fragment, null); 实现当然是没有问题的,只是Fragment的布局也就失去控制了。那我们如何来控制布局呢?
public View infalte(int resource , ViewGroup root , boolean attachToroot)
第一参数是指显示的视图资源ID
第二参数 是绑定的视图容器对象(FrameLayout)
第三参数 这里应该设置为false 因为设置为true的话 视图资源就会作为root 的子视图存在 这样就与Android系统中规定一个视图同时只能有一个父视图相冲突。如果这是false,这样表示指定的视图并不属于视图容器的子视图了。
这一节就复习到这里。
- 封装UI和代码利器—Fragment(三)
- 封装代码和UI的利器—Fragment(一)
- 封装代码和UI利器—Fragment(二)
- 封装UI和代码利器—Fragment(四)
- 封装代码和UI利器—Fragment(五)
- 封装UI和代码利器—Fragment(六)
- Code Fragment-封装重复代码的代码
- 猫猫学IOS(三)UI之纯代码实现UI——图片查看器
- 客户端封装Fragment和Activity
- Activity和fragment的封装
- Fragment系列(三)------RecyclerFragment之UI部分
- Fragment系列(三)------RecyclerFragment之UI部分
- [iOS手写代码UI界面调试利器]Reveal及破解版本(1.5.1)
- fragment 深入理解 及 代码 封装
- 【UI模块】Fragment之一(创建和调用)
- 【UI模块】Fragment之二(周期和通信)
- 代码打补丁的利器——diff和patch
- 分布式利器Zookeeper(三)
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- 错误解决 error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such fil
- 关于libcur接口l函数curl_easy_perform内存泄露的问题
- Hibernate4.3.1搭建Log4J日志环境
- windows进程间通信
- 封装UI和代码利器—Fragment(三)
- Unity3D中MAC&Windows跨平台解析Excel的代码
- OgreMax导出场景文件错位问题解决
- 【JAVA资料免费下载】158个JAVA免豆精品资料汇总
- 来这里每一天离不开你
- Delphi 2010安装及使用UniDAC 4.0
- 级联删除注意
- struct2 的拦截器
- 海盗分金币的问题