A009-layout资源

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

layout资源

图中的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的时候再来讲这个问题,童鞋可以先想一想,自己百度一下,看是否能找到答案。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值