xml解析成view对象需要注意的事

来源:互联网 发布:杜蕾斯震动棒 知乎 编辑:程序博客网 时间:2024/05/29 09:53

        很多时候我们需要把一个xml布局文件转成view对象,通过以下代码实现:

    inflater.inflate(int resource, ViewGroup root, boolean attachToRoot);

     其中inflater对象可以通过以下几种方式获取:

LayoutInflater inflater=LayoutInflater.from(Context context);
LayoutInflater inflater=getLayoutInflater();
LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);


inflate方法有几个重载 比如我们可以写成 inflater.inflate(int resource, null);当我们传入null时,跟布局layout_xxx属性无效,比如我要实现图下这种效果,通过添加item间的分隔来测试

                                       

                                                                 


  我们在item的xml中代码为


                      

看跟布局FramLayout中的 layout_margin="5dp" ,item间的分隔符是通过这个实现的,但是当我们解析xml文件的代码写成inflater.inflate(int resource, null);发现没有分隔效果,如下图

                                       


xml跟布局Framlayout中明明写了layout_margin="5dp"却没有效果了,但是把layout_margin="5dp" 属性写在TextView中就有效果了,


通过查阅源码发现,当root也就是ViewGroup parent 这个参数不为空并且attachToRoot为false时 跟布局属性才被设置进去,

当然你可以选择把layout相关属性写在对应的子view中,但是如果子view太多就不便于代码的书写,这时候在跟布局中就比较好控制,源码如下:

                               

其实还有一种加载xml为view对象的写法 View.inflate(Context context,int resource, ViewGroup root),原理都是一样的,这种我们第三个参数一般为null,这种跟上面差不多,当ViewGroup为null时,resource中的跟布局layout属性就无效了,所以还是推荐上面的加载xml布局的写法

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕了长痔疮了怎么办 人流后子宫内膜薄怎么办 多囊子宫内膜薄怎么办 6岁儿童不爱睡觉怎么办 初生儿嗓子哑了怎么办 6岁儿童睡眠不好怎么办 8岁儿童睡眠不好怎么办 1个月婴儿睡眠少怎么办 三岁宝宝心跳快怎么办 宝宝右心房稍大怎么办 胎儿右心房偏大怎么办 胎心监测波动小怎么办 怀孕6个月不想要了怎么办 高敏肌钙蛋白t高怎么办 龟头沟槽里长疙瘩怎么办 肝郁气滞的体质怎么办 手指甲长在肉里怎么办 甲床与指甲脱离怎么办 指甲往肉里面长怎么办 指甲和肉分离是怎么办 大脚趾指甲空了怎么办 脚趾甲长在肉里怎么办 脚趾甲又厚又硬怎么办 小孩子咳嗽有痰怎么办%3f 支气扩张咳血怎么办小 背部第8块脊椎疼怎么办 坐时间长了背疼怎么办 新生儿总哭怎么办吐奶 婴儿吃饱了还哭怎么办 宝宝喉咙哭哑了怎么办 婴儿哭哑了嗓子怎么办 婴儿胖子哭哑了怎么办 孩子声音哭哑了怎么办 喝咖啡手抖心慌怎么办 累了就心慌发抖怎么办 经常头晕心慌胸闷乏力怎么办 在末地迷路了怎么办 在森林里迷路了怎么办 电热宝充电不热怎么办 保温壶按钮坏了怎么办 热水壶盖子坏了怎么办