通常我必须编写如下布局代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" />
我想做这样的事情:
<LinearLayout xmlns="http://schemas.android.com/apk/res/android"
layout_width="fill_parent"
layout_height="fill_parent"
orientation="vertical" >
但是这段代码运行不正常。为什么呢?
第二个问题:为什么元素名称在CamelCase中,属性在under_score中?
答案 0 :(得分:7)
XML默认命名空间do not apply to attribute names。因此,您始终必须指定属性的名称空间(如果有):
默认名称空间声明不会 直接应用于属性名称;该 解释无前缀 属性由。确定 它们出现的元素。
所以真正的问题是:为什么Android设计师在没有命名空间的情况下定义元素名称,只将属性放入Android命名空间?
正如文档所示,如果元素名称在Android命名空间中,那么属性名称实际上不会需要他们自己的命名空间。
答案 1 :(得分:2)
但是这段代码运行不正常。为什么呢?
因为构建工具不支持它。最后我检查过,任何带前缀的命名空间都应该有效(例如xmlns:a="http://schemas.android.com/apk/res/android"
),但默认命名空间从未起作用。
如果您愿意,您可以提出并提供补丁。在此过程中,您将能够确定是否存在这样的哲学原因,技术原因,或者他们是否从未接触过它。
为什么元素名称在CamelCase中,属性在under_score?
元素名称是Java类,通常在CamelCase中。一般来说,属性不是“under_score” - layout_
前缀表示一系列属性,这些属性是View
到其容器的请求。但是,如果你仔细查看属性,你会发现大多数是camelCase,忽略了这个前缀(例如,android:textSize
)。