【问题标题】:Are Views automatically inflated?视图会自动膨胀吗?
【发布时间】:2016-08-03 22:48:49
【问题描述】:

据我了解,LayoutInflater 将 XML 转换为视图。但是当我在代码中使用 Buttons、TextViews 或其他小部件时,我只需使用 findViewById() 即可,而不必先对这些 View 进行膨胀。这些视图是否会自动膨胀?如果是这样,视图什么时候会自动膨胀,什么时候必须手动膨胀?

【问题讨论】:

  • 您的基本问题是“我什么时候需要手动扩充视图,什么时候会自动为我完成?” Ankesh kumar Jaisansaria 给出了很好的答复。也看这里:Difference between setcontentview and inflater。最后,阅读这个帖子:fragments vs activities and views
  • Inflate 只是意味着从 XML 转换为实际的 View 对象。 findViewById 只是定位实际的视图对象,以便您对其进行操作。

标签: android layout-inflater


【解决方案1】:

你只需要扩展一个 xml 布局,然后所有的视图组和视图(按钮、文本视图、编辑文本等)都会自动显示出来。

所以在 Activity 类中,oncreate 方法有一行 SetContentview(),这会膨胀 xml 布局。

【讨论】:

    【解决方案2】:

    Activity 需要在其onCreate 方法中包含对setContentView(R.layout.<your_layout_here>) 的调用。这会将指定布局中的 XML 膨胀到 Activity 的视图层次结构中。对于Fragment,覆盖onCreateView 方法,如下所示:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.<your_layout_here>, container, false);
    }
    

    一旦您将布局(及其所有子级Views)膨胀到视图层次结构中,您就可以使用findViewById(R.id.&lt;your_view_id&gt;) 来获取对您膨胀到的实际View 对象的引用层次结构并玩弄它。

    【讨论】:

      【解决方案3】:

      如果您手动创建 Activity 和 xml,您会手动增加视图。

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.your_activity); 
      }
      

      【讨论】:

        【解决方案4】:

        这里的东西很少:

        1. 活动视图(UI 屏幕),由 setContentView() 设置em> 方法。

        2. 特定 UI 组件的视图 例如按钮,可以在 您的 activity_layout 的 xml 中创建,或者您可以为您的特定 UI 组件扩展一个 单独的 xml 布局文件。最好的 example 和使用就像为您的自定义 Toast 膨胀一个 xml 布局文件。

        所以,这里是与 setContentView() 和为单独的视图膨胀 xml 布局文件相关的事情: 两者都为视图和视图组件提供布局,它们都为布局创建二进制输出并如上所述使用它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-29
          • 1970-01-01
          相关资源
          最近更新 更多