public abstract class LayoutInflater
extends Object
java.lang.Object | |
↳ | android.view.LayoutInflater |
将布局XML文件实例化为其对应的View
对象。 它从不直接使用。 而应使用getLayoutInflater()
或getSystemService(Class
来检索标准LayoutInflater实例,该实例已连接到当前上下文,并且正在为正在运行的设备配置该实例。 例如:
LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
要为您自己的视图创建一个具有额外 LayoutInflater.Factory
的新LayoutInflater,您可以使用 cloneInContext(Context)
复制现有的ViewFactory,然后调用 setFactory(LayoutInflater.Factory)
以包含您的Factory。
出于性能原因,查看通胀严重依赖于在构建时完成的XML文件的预处理。 因此,目前不可能在运行时使用带有XmlPullParser的LayoutInflater而不是普通的XML文件; 它仅适用于从编译资源返回的XmlPullParser(R. something文件)。
也可以看看:
Nested classes |
|
---|---|
interface |
LayoutInflater.Factory
|
interface |
LayoutInflater.Factory2
|
interface |
LayoutInflater.Filter 挂钩以允许LayoutInflater的客户端限制允许被夸大的视图集合。 |
Protected constructors |
|
---|---|
LayoutInflater(Context context) 创建一个与特定上下文关联的新的LayoutInflater实例。 |
|
LayoutInflater(LayoutInflater original, Context newContext) 创建一个新的LayoutInflater实例,该实例是现有LayoutInflater的副本,并且可以更改其上下文。 |
Public methods |
|
---|---|
abstract LayoutInflater |
cloneInContext(Context newContext) 创建现有LayoutInflater对象的副本,副本指向与原始不同的上下文。 |
final View |
createView(String name, String prefix, AttributeSet attrs) 用于按名称实例化视图的低级函数。 |
static LayoutInflater |
from(Context context) 从给定的上下文中获取LayoutInflater。 |
Context |
getContext() 返回我们正在运行的上下文,以访问资源,类加载器等。 |
final LayoutInflater.Factory |
getFactory() 返回当前 |
final LayoutInflater.Factory2 |
getFactory2() 返回当前 |
LayoutInflater.Filter |
getFilter() |
View |
inflate(int resource, ViewGroup root) 从指定的xml资源中扩充新的视图层次结构。 |
View |
inflate(XmlPullParser parser, ViewGroup root) 从指定的xml节点膨胀新的视图层次结构。 |
View |
inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) 从指定的XML节点扩充新的视图层次结构。 |
View |
inflate(int resource, ViewGroup root, boolean attachToRoot) 从指定的xml资源中扩充新的视图层次结构。 |
void |
setFactory(LayoutInflater.Factory factory) 在使用此LayoutInflater时附加一个自定义工厂界面以创建视图。 |
void |
setFactory2(LayoutInflater.Factory2 factory) 像 |
void |
setFilter(LayoutInflater.Filter filter) 设置 |
Protected methods |
|
---|---|
View |
onCreateView(View parent, String name, AttributeSet attrs) 版本 |
View |
onCreateView(String name, AttributeSet attrs) 此例程负责根据xml元素名称创建View的正确子类。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
LayoutInflater (Context context)
创建一个与特定上下文关联的新的LayoutInflater实例。 应用程序几乎总是希望使用Context.getSystemService()
来检索标准Context.INFLATER_SERVICE
。
Parameters | |
---|---|
context |
Context : The Context in which this LayoutInflater will create its Views; most importantly, this supplies the theme from which the default values for their attributes are retrieved. |
LayoutInflater (LayoutInflater original, Context newContext)
创建一个新的LayoutInflater实例,该实例是现有LayoutInflater的副本,并且可以更改其上下文。 用于实施cloneInContext(Context)
。
Parameters | |
---|---|
original |
LayoutInflater : The original LayoutInflater to copy. |
newContext |
Context : The new Context to use. |
LayoutInflater cloneInContext (Context newContext)
创建现有LayoutInflater对象的副本,副本指向与原始不同的上下文。 这被ContextThemeWrapper
用来创建一个新的LayoutInflater以配合新的Context主题。
Parameters | |
---|---|
newContext |
Context : The new Context to associate with the new LayoutInflater. May be the same as the original Context if desired. |
Returns | |
---|---|
LayoutInflater |
Returns a brand spanking new LayoutInflater object associated with the given Context. |
View createView (String name, String prefix, AttributeSet attrs)
用于按名称实例化视图的低级函数。 这将尝试实例化在此LayoutInflater的ClassLoader中找到的给定名称的视图类。
在错误情况下可能发生两件事情:描述错误的异常将被抛出,或者返回null。 你必须处理两种可能性 - 前者会在第一次发生createView()时被调用某个特定名称的类,后者每次都会为该类名称调用。
Parameters | |
---|---|
name |
String : The full name of the class to be instantiated. |
prefix |
String
|
attrs |
AttributeSet : The XML attributes supplied for this instance. |
Returns | |
---|---|
View |
View The newly instantiated view, or null. |
Throws | |
---|---|
ClassNotFoundException |
|
InflateException |
LayoutInflater from (Context context)
从给定的上下文中获取LayoutInflater。
Parameters | |
---|---|
context |
Context
|
Returns | |
---|---|
LayoutInflater |
LayoutInflater.Factory getFactory ()
返回当前的LayoutInflater.Factory
(或null)。 这在每个元素名称上被调用。 如果工厂返回一个View,将其添加到层次结构中。 如果它返回null,则继续调用onCreateView(name)。
Returns | |
---|---|
LayoutInflater.Factory |
LayoutInflater.Factory2 getFactory2 ()
返回当前LayoutInflater.Factory2
。 如果没有设置工厂或者工厂没有实现LayoutInflater.Factory2
接口,则返回null。 这在每个元素名称上被调用。 如果工厂返回一个View,将其添加到层次结构中。 如果它返回null,则继续调用onCreateView(name)。
Returns | |
---|---|
LayoutInflater.Factory2 |
LayoutInflater.Filter getFilter ()
Returns | |
---|---|
LayoutInflater.Filter |
The LayoutInflater.Filter currently used by this LayoutInflater to restrict the set of Views that are allowed to be inflated. |
View inflate (int resource, ViewGroup root)
从指定的xml资源中扩充新的视图层次结构。 如果有错误,则抛出InflateException
。
Parameters | |
---|---|
resource |
int : ID for an XML layout resource to load (e.g., R.layout.main_page ) |
root |
ViewGroup : Optional view to be the parent of the generated hierarchy. |
Returns | |
---|---|
View |
The root View of the inflated hierarchy. If root was supplied, this is the root View; otherwise it is the root of the inflated XML file. |
View inflate (XmlPullParser parser, ViewGroup root)
从指定的xml节点膨胀新的视图层次结构。 如果出现错误,则抛出InflateException
。 *
重要由于性能方面的原因,查看通货膨胀严重依赖于在构建时完成的XML文件的预处理。 因此,在运行时,通过普通的XML文件使用LayoutInflater和XmlPullParser是不可能的。
Parameters | |
---|---|
parser |
XmlPullParser : XML dom node containing the description of the view hierarchy. |
root |
ViewGroup : Optional view to be the parent of the generated hierarchy. |
Returns | |
---|---|
View |
The root View of the inflated hierarchy. If root was supplied, this is the root View; otherwise it is the root of the inflated XML file. |
View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot)
从指定的XML节点扩充新的视图层次结构。 如果有错误,则抛出InflateException
。
重要由于性能方面的原因,查看通货膨胀严重依赖于在构建时完成的XML文件的预处理。 因此,在运行时,通过普通的XML文件使用LayoutInflater和XmlPullParser是不可能的。
Parameters | |
---|---|
parser |
XmlPullParser : XML dom node containing the description of the view hierarchy. |
root |
ViewGroup : Optional view to be the parent of the generated hierarchy (if attachToRoot is true), or else simply an object that provides a set of LayoutParams values for root of the returned hierarchy (if attachToRoot is false.) |
attachToRoot |
boolean : Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML. |
Returns | |
---|---|
View |
The root View of the inflated hierarchy. If root was supplied and attachToRoot is true, this is root; otherwise it is the root of the inflated XML file. |
View inflate (int resource, ViewGroup root, boolean attachToRoot)
从指定的xml资源中扩充新的视图层次结构。 如果有错误,则抛出InflateException
。
Parameters | |
---|---|
resource |
int : ID for an XML layout resource to load (e.g., R.layout.main_page ) |
root |
ViewGroup : Optional view to be the parent of the generated hierarchy (if attachToRoot is true), or else simply an object that provides a set of LayoutParams values for root of the returned hierarchy (if attachToRoot is false.) |
attachToRoot |
boolean : Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML. |
Returns | |
---|---|
View |
The root View of the inflated hierarchy. If root was supplied and attachToRoot is true, this is root; otherwise it is the root of the inflated XML file. |
void setFactory (LayoutInflater.Factory factory)
在使用此LayoutInflater时附加一个自定义工厂界面以创建视图。 这不能为空,只能设置一次; 设置后,您不能更改工厂。 这在每个元素名称被称为xml解析。 如果工厂返回一个视图,该视图被添加到层次结构中。 如果它返回null,则调用下一个出厂默认方法onCreateView(View, String, AttributeSet)
。
如果您有一个现有的LayoutInflater并想将自己的工厂添加到它,请使用cloneInContext(Context)
克隆现有实例,然后可以在返回的新实例上使用此函数(一次)。 这会将您自己的工厂与原始实例使用的任何工厂合并。
Parameters | |
---|---|
factory |
LayoutInflater.Factory
|
void setFactory2 (LayoutInflater.Factory2 factory)
像 setFactory(LayoutInflater.Factory)
一样,但允许您设置 LayoutInflater.Factory2
界面。
Parameters | |
---|---|
factory |
LayoutInflater.Factory2
|
void setFilter (LayoutInflater.Filter filter)
通过此LayoutInflater将LayoutInflater.Filter
设置为。 如果一个视图试图被夸大,这是LayoutInflater.Filter
不允许的,那么inflate(int, ViewGroup)
调用将会抛出InflateException
。 此过滤器将替换此LayoutInflater上设置的任何以前的过滤器。
Parameters | |
---|---|
filter |
LayoutInflater.Filter : The Filter which restricts the set of Views that are allowed to be inflated. This filter will replace any previous filter set on this LayoutInflater. |
View onCreateView (View parent, String name, AttributeSet attrs)
版本onCreateView(String, AttributeSet)
也需要构建视图的未来父项。 默认实现只需调用onCreateView(String, AttributeSet)
。
Parameters | |
---|---|
parent |
View : The future parent of the returned view. Note that this may be null. |
name |
String : The fully qualified class name of the View to be create. |
attrs |
AttributeSet : An AttributeSet of attributes to apply to the View. |
Returns | |
---|---|
View |
View The View created. |
Throws | |
---|---|
ClassNotFoundException |
View onCreateView (String name, AttributeSet attrs)
此例程负责根据xml元素名称创建View的正确子类。 重写它来处理自定义视图对象。 如果你在你的子类中覆盖它,一定要通过super.onCreateView(name)调用你不认识的名字。
Parameters | |
---|---|
name |
String : The fully qualified class name of the View to be create. |
attrs |
AttributeSet : An AttributeSet of attributes to apply to the View. |
Returns | |
---|---|
View |
View The View created. |
Throws | |
---|---|
ClassNotFoundException |