【问题标题】:Clarification about layout inflater -attach to root?关于布局充气器的澄清 - 附加到根?
【发布时间】:2014-08-10 03:57:03
【问题描述】:

我在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 文件的根视图。我在这里有正确的想法还是我错过了什么?

【问题讨论】:

    标签: android layout-inflater


    【解决方案1】:

    不,遗漏了什么!

    当你将true 传递为'attach to root'时,inflater 会膨胀指定的布局(由它的 ID 表示)然后将其附加到父级的根目录,最后返回父级

    但是当您将“附加到根目录”留给false 时。父层次结构不会改变,只会返回膨胀的布局。

    【讨论】:

    • @committedandroider 作为父级的null 的结果将是inflate(id, null, false)
    【解决方案2】:

    是的,你是对的 :: 简而言之

     @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 参考来查找此的所有子视图 父布局
    • 即使activity 不是,您也可以在此处推荐孩子views 尚未创建

    【讨论】:

      【解决方案3】:

      如果您阅读this,您会发现如果您不想附加null 作为根ViewGroup 的值,您应该使用inflater.inflate 的三参数版本第三个参数(附加到根)设置为false。即,这样做:

           @Override
              public View onCreateView(LayoutInflater inflater, 
                                       ViewGroup container,
                                       Bundle savedInstanceState) 
      {
                  View view = LayoutInflater.from(getActivity()).inflate
                                     (
                                       R.layout.your_layout, 
                                       container, 
                                       false
                                      );
                  return view;
              }
      

      来自docs

      root 作为生成层次结构的父级的可选视图(如果 attachToRoot 为 true),或者只是一个对象,为返回的层次结构的根提供一组 LayoutParams (如果 attachToRoot 为 false。)

      而且this 真的很好。

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多