我无法理解 LayoutInflater 在 Android 中的使用。
LayoutInflater 的作用究竟是什么,以及如何将它用于一个简单的 Android 应用程序?
我无法理解 LayoutInflater 在 Android 中的使用。
LayoutInflater 的作用究竟是什么,以及如何将它用于一个简单的 Android 应用程序?
什么是 Layoutinflater ?
LayoutInflater
是一个类(一些实现或服务的包装器),你可以得到一个:
LayoutInflater li = LayoutInflater.from(context);
如何使用 Layoutinflater ?
你给它一个 XML 布局文件。您无需提供完整的文件地址,只需提供在R
课堂上自动为您生成的资源 id。例如,一个布局文件看起来像:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
另存为/res/layout/my_layout.xml
.
你给它LayoutInflater
喜欢:
View v = li.inflate(R.layout.my_layout,null,false);
Layout Inflater 做了什么?
这v
现在是一个LinearLayout
对象( LinearLayout
extends View
),并且包含一个TextView
对象,按照准确的顺序排列并设置了所有属性,正如我们在上面的 XML 中描述的那样。
TL;DR: ALayoutInflater
读取了一个 XML,我们在其中描述了我们想要的 UI 布局。View
然后它从该 XML 为 UI创建实际对象。
当你跑的时候setContentView(layout file name)
,你就可以跑findViewById(id of the widget)
。你不需要做类似的事情xyz.findViewById
。您的应用程序的上下文设置为该布局文件,所有findBiewById
调用都将引用该布局文件。
在某些情况下,您需要再选择一个布局文件,例如 CustomDialog、ListElement 或 Custom Toast。这时候你不会想只为这些小的 UI 组件创建一个 Activity,那个时候你需要以编程方式获取对你的布局文件的编程引用,以便你可以在其上运行 findViewById。
充气,像气球一样吹出布局,给你一个气球,让你在它周围观察所有颜色和绘制在它上面的对象:)。Inflate 为您提供对该布局的对象引用以调用 findViewById。
希望这能清除。
LayoutInflater 的一些基础知识-
此类用于将布局 XML 文件实例化为其对应的 View 对象。
它从不直接使用。反而,
getLayoutInflater()
或getSystemService(String)
检索已经连接到当前上下文的标准 LayoutInflater 实例。来自 Android 文档:
将布局 XML 文件实例化为其对应的 View 对象。它从不直接使用。相反,使用 getLayoutInflater() 或 getSystemService(String) 来检索标准 LayoutInflater 实例,该实例已连接到当前上下文并为您正在运行的设备正确配置。例如:
LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
在创建自定义视图时很有用
它最有可能被关闭,但布局充气器的作用是view
从提供的布局文件创建一个
View row=getLayoutInflater.inflate(R.layout.list_item,parent,false);
它正在从R.layout.list_item
文件中创建视图并证明这一点view
。