首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >A009-layout资源

A009-layout资源

作者头像
巫山老妖
发布2018-07-23 10:21:57
4350
发布2018-07-23 10:21:57
举报

本节课继续讲Android中的资源文件-layout资源,一个界面的诞生离不开布局,我们Android开发者的大部分工作都是在搭建UI,一个产品的诞生,首先是由产品经理出线框图,再由设计师出视觉稿和标注图,然后我们开发人员才会根据标注图来搭建界面。本节课就来给大家简单介绍一下我们要用到的布局资源,先来看AS中布局资源长什么样子,如下图所示:

图中的layout文件夹存放的就是我们程序中的布局文件,我们每搭一个界面都需要在layout文件夹下创建相应的xml文件,然后在程序中通过以下方式引用:

@Override
    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

我们在Activity中通过setContentView的方法,把我们的界面显示出来。 除了这种方式,我们实际开发中可能需要动态的加载布局文件,需要通过LayoutInflater这个类来找到相应的布局文件,它就类似Activity中的findViewById的作用,只不过findViewById查找的是当前页面的控件,而LayoutInflater是加载布局文件中的布局文件。

获取LayoutInflater实例有三种形式:

1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 2. LayoutInflater inflater = LayoutInflater.from(context);  
3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService                           (Context.LAYOUT_INFLATER_SERVICE);

获取到LayoutInflater实例对象之后,调用其inflate方法来动态加载布局。 我们用得比较多的是以下两个方法

public View inflate (int resource, ViewGroup root) public View inflate (int resource, ViewGroup root, boolean attachToRoot)

eg:

        LayoutInflater inflater = LayoutInflater.from(this);

        LinearLayout view = (LinearLayout) inflater.inflate(R.layout.layout_inflate, null);

通过以上这种方式就可以把layout下的xml文件动态加载出来。

这里留一个思考题给大家思考一下,上面inflate的两种加载方法,之间的区别是什么? 这个问题刚开始接触可能不能理解它们之间的区别,只有应用在特定的场景才会意识到它们的区别,比如我们使用ListView的时候,需要加载item布局,使用上面两种重载方式,并设置不同的参数都会有不同的效果

inflater.inflate(R.layout.list_item, null);

inflater.inflate(R.layout.list_item, parent, false);

inflater.inflate(R.layout.list_item, parent, true);

这个疑问我们先放着,等我们讲到ListView的时候再来讲这个问题,童鞋可以先想一想,自己百度一下,看是否能找到答案。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小巫技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档