【问题标题】:Android dev: what is the difference between INSTANTIATING a View and DEFINING it in the XML LayoutAndroid 开发者:实例化视图和在 XML 布局中定义视图有什么区别
【发布时间】:2013-01-05 17:40:41
【问题描述】:

我是 Android 开发的新手。

我有带有 ADT 的 Eclipse(sdk 版本:17,Android 4.2)。

我不明白有什么区别:

  • 定义一个View(通过ADT提供的可视化编辑器或者直接在当前activity对应的XML布局文件中)

  • 实例化视图(将上下文作为参数传递),例如:TextView tv = new TextView(getContext());(取自:@ 987654321@,第一个回答)

  • 实例化视图(不将上下文作为参数传递),例如:TextView tv = new TextView();

提前感谢您的任何建议。

亲切的问候

【问题讨论】:

    标签: android-layout android-view


    【解决方案1】:

    使用您的术语:

    在 XML 中定义 View 时(或 ADT 编辑器 - 它只是为您创建 XML),它仍然需要由布局充气器充气。布局充气器将为您实例化View(s)。这可以在幕后完成 - 例如当您调用 Activity.setContentView() 或直接使用 View.inflate() 时。充气器实际上只是通过 XML 运行并实例化它包含的所有视图。

    在实例化View 时,您将为其提供Context,因此它具有对资源的引用 - 因此它可以加载图像、字符串、尺寸等 - 以及其他与 Android 相关的功能(您可能会忽略这些功能)现在)。

    没有上下文就无法实例化View

    【讨论】:

    • 谢谢。你能解释一下使用 setContentView() 和 inflate() 的区别吗?
    • setContentView() 设置布局或将View 放入您的ActivityView.inflate 从您提供的 XML 中膨胀(即构建)View 层次结构并返回它,以便您做其他事情(除非您将 ViewGroup 作为父级传递 - 在这种情况下,它将 View 层次结构放在它上面在您提供的父级内部构建)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多