有两个公共(public)接口(interface):
android sdk中的 LayoutInflater.Factory
和 LayoutInflater.Factory2
,但是官方文档无法说出有关此接口(interface)的有用信息,即使是 LayoutInflater
文档也是如此。
从来源我了解到,如果设置了Factory2
,则将使用它,否则将使用Factory
:
View view;
if (mFactory2 != null) {
view = mFactory2.onCreateView(parent, name, context, attrs);
} else if (mFactory != null) {
view = mFactory.onCreateView(name, context, attrs);
} else {
view = null;
}
setFactory2()
也有非常简洁的文档:/**
* Like {@link #setFactory}, but allows you to set a {@link Factory2}
* interface.
*/
public void setFactory2(Factory2 factory) {
如果要将自定义工厂设置为
LayoutInflater
,应该使用哪个工厂?它们之间有什么区别?
最佳答案
唯一的区别是,在Factory2
中,您可以配置谁是新 View 的parent view
。
用法-
当您需要将特定的父级设置为新 View 时,请使用Factory2
创建。(仅支持API 11及更高版本)
代码-LayoutInflater源:(删除了不相关的代码之后)
public interface Factory {
// @return View Newly created view.
public View onCreateView(String name, Context context, AttributeSet attrs);
}
现在
Factory2
:public interface Factory2 extends Factory {
// @param parent The parent that the created view will be placed in.
// @return View Newly created view.
public View onCreateView(View parent, String name, Context context, AttributeSet attrs);
}
现在,您可以看到
Factory2
只是Factory
选项的View parent
的重载。关于java - LayoutInflater的Factory和Factory2有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39253009/