关于布局inflater的澄清 - 关于根?

时间:2014-08-10 03:57:03

标签: android layout-inflater

我在Why does LayoutInflater ignore the layout_width and layout_height layout parameters I've specified?上阅读了答案,并希望确保我理解附加到root的内容。 基本上如果你这样做

inflater.inflate(int idOfLayoutFile, ViewGroup parent, boolean AttachToRoot)

并且假设父级不为空

从我得到的答案是,附加到root只会影响inflate方法的返回类型。也就是说,如果attachToRoottrue,则方法将返回父级,如果是false,则该方法将返回资源ID指定的XML文件的根视图。我在这里有正确的想法还是我错过了什么?

3 个答案:

答案 0 :(得分:4)

不,错过了什么!

当您将true作为'附加到根'时,inflater将使指定的布局(由其ID表示)膨胀,然后将其附加到父的根,最后返回父< / p>

但是当你离开'附加到root'到false时。父层次结构不会改变,只会返回膨胀的布局。

答案 1 :(得分:1)

是的,你是对的 :: 简称

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(
                R.layout.your_layout, null);
        return view;
    }
  • 现在按照上面的代码view引用将保留根元素 布局your_layout
  • 您可以使用此view引用来查找此的所有子视图 父布局
  • 您可以在此处引荐孩子views,即使activity不是 已创建

答案 2 :(得分:0)

如果您阅读this,您会发现如果您不想附加null,则不应将ViewGroup作为根inflater.inflate的值传递,而应使用3 - false的参数版本,第3个参数(附加到根)设置为 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate ( R.layout.your_layout, container, false ); return view; } 。即,这样做:

root

来自docs

LayoutParams可选视图是生成的层次结构的父级(如果attachToRoot为true),或者只是为返回的层次结构的根提供一组d1 = {u'Orange': [u'OR', u'LI', u'LE'], u'Red': [u'AP', u'ST']} d2 = {u'Orange': [u'ORANGE', u'LIME', u'LEMON'], u'Red': [u'APPLE', u'STRAWBERRY']} for k,abbrevs in d1.items(): print("Category:", k) for abb, name in zip(abbrevs, d2[k]): print("{} - {}".format(abbrev, name)) 值的对象(如果attachToRoot为false。)

this非常好。