我是靠谱客的博主 幽默硬币,最近开发中收集的这篇文章主要介绍Android LayoutInflater(布局扩展)总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

修炼-------------Android LayoutInflater(布局扩展)总结

在实际开发中LayoutInflater这个类还是非常实用的,根据LayoutInflater字母翻译为布局扩展。这个类有点类似于ActivityfindViewById(int id)这个方法,只不过findViewById这个方法查找的是UI组件,ButtonTextView,

LayoutInflater则是实例化xml文件,将一个xml文件通过器其inflate方法转换为一个View,以便于其他组件实用.AlertDialog.BuildersetView方法等

LayoutInflater的主要作用的就是:inflate

参照SDK文档:

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) 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. 

获得LayoutInflater对象的方法主要有:

1.通过getLayoutInflater()获得LayoutInflater inflater = getLayoutInflater();

2.通过LayoutInflater.from(Context context)获得

3.通过getSystemService(String str)获得

下面通过演示一个图示来简要解释下LayoutInflater,如图一

 

当用户单击"弹出一个自定义对话框"按钮时,则如图二

源码:

主要代码如下(获取LayoutInflater)

//得到LayoutInflater,以下几种方式都可以

LayoutInflater inflater = null;

//inflater = getLayoutInflater();

//inflater = LayoutInflater.from(LayoutInflaterTestActivity.this);

inflater=(LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);

//实例化一个xml为View

View view = inflater.inflate(R.layout.custom_dialognull);

转载内容:

http://blog.163.com/guozioo@126/blog/static/64086947201052925641679/

3. LayoutInflater.inflate() 

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

更多详情请参照SDK文档

Xml代码 

<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>  

<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。 

4. findViewById2中形式 

R.layout.xx 是引用res/layout/xx.xml的布局文件(inflate方法),R.id.xx是引用布局文件里面的组件,组件的idxx...findViewById方法)。看看R.java配置文件吧,R对文件分类管理,多写几个layout.xml后你会发现,所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常 。 

1Activity中的findViewById() 

public View findViewById (int id) 

Finds a view that was identified by the id attribute from the XML that was processed in 

onCreate(Bundle)

ReturnsThe view if found or null otherwise. 

2View中的findViewById() 

public final View findViewById (int id) 

Look for a child view with the given id. If this view has the given id, return this view.

Parameters       id  The id to search for.

最后

以上就是幽默硬币为你收集整理的Android LayoutInflater(布局扩展)总结的全部内容,希望文章能够帮你解决Android LayoutInflater(布局扩展)总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部