为什么样式和布局不使用Android命名空间?

15

例如,当创建这个时:

<TextView
    style="@style/blah"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

<include
    layout="@layout/footer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
可能的原因是:样式(style)和布局(layout)在编译期间被处理,但我不能100%确定。 编辑: 在 AndroidManifest.xml 文件中使用的 package 也是同样的情况。
1个回答

4
查看LayoutInflater的源代码,似乎没有明显的原因解释为什么在include标签中使用layout而不是android:layout。我猜测,由于include标签是布局中的特殊情况,因此不需要使用android前缀。
然而,include标签在编译时不会被处理,否则它现在就不会出现在LayoutInflater中了 ;)
至于style,我不确定,但我认为原因是命名空间属性是在XML中定义的,并作为View构造函数中的AttributeSet传递。然而,样式并未作为该集合中的参数传递,而是作为单独的参数传递。因此,我认为推理是style是一个始终存在的参数,而命名空间前缀属性是针对View的动态和自定义的。
所以我不能给出明确的答案,但也许这可以帮助您 ;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接