有两个公共(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/

10-12 01:42