android开发之LayoutInflater

LayoutInflater的使用,在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),不同点是:
  LayoutInflater是用来找layout下xml布局文件,并且实例化!
  findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。

  补充总结:
  1.一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。(This class is used to instantiate layout XML file into its corresponding View objects . It is never be used directly -- use getLayoutInflater() or getSystemService(String)getLayoutInflater() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up to the current context and correctly configured for the device you are running on)。

  2.获得LayoutInflater的方法:
  1)通过SystemService获得
  LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  2)从给定的context中获得
  LayoutInflater inflater = LayoutInflater.from(context);
  两者区别:实质是一样的,看方法(2)源码

  public static LayoutInflater from(Context context) {
   LayoutInflater LayoutInflater =
   (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   if (LayoutInflater == null) {
   throw new AssertionError("LayoutInflater not found.");
   }
   return LayoutInflater;
  }

  3.LayoutInflater.inflate()
  将Layout文件转换为View,顾名思义,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById(),这一段描述有误,看如下代码 。看下面文档写的已经很清楚。

  <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">

   <LinearLayout android:id="@+id/placeslist_linearlayout"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical">

   </LinearLayout>
  </ScrollView>

  LinearLayout linearLayout = (LinearLayout) findViewById(R.id.placeslist_linearlayout);
  linearLayout.addView(place_type_text);
  这是可运行的,这上面的xml中,LinearLayout不再是Layout的代表,而只是一个普通的View。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值