Example, when creating this:
<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"/>
Possible reason:
style
and layout
get processed at compile time, but I am not 100% sure.
EDIT:
Same thing with package
in the AndroidManifest.xml
file.
Namespaces uniquely identify code/libraries. If I write an api that uses all the same names and such as the android api the only way to distinguish between my api and android api is to use the android namespace, or mine. i mean, this is the definition of what the namespace does, but it doesn't touch on the why.
An XML Namespace has the properties: Namespace URI: Namespace name expressed as a URI to which the prefix is bound. prefix: syntactically, this is the part of the attribute name following the XMLConstants. XMLNS_ATTRIBUTE ("xmlns") in the Namespace declaration.
The <layout> tag must be the root tag when you are using DataBinding . Doing so you are telling the compiler that you are using DataBinding and your layout will have special tags like <variable> or <import> , so you have to embed your layout within that tag.
UselessParent is an Android lint issue identifier for a check that tries to figure out whether a parent layout can be removed. tools:ignore="UselessParent" disables that check in the specified element and its children in case you want to suppress the lint message.
Looking at the source of LayoutInflater
, there doesn't seem to be a obvious reason why it's layout
in a include tag and not android:layout
. I guess since the include tag is a special case in a layout there's no need for the android prefix.
The include tag is not processed at compile time however, else it wouldn't be in LayoutInflater
now wouldn't it ;)
As for style
, I don't know for sure, but I think the reason is that namespaced attributes are defined in XML
and passed as AttributeSet
in the View
constructor. The style however isn't passed in that set, but as a separate parameter. So I think the reasoning is that style
is a parameter that is always there, while namespace prefixed attributes are dynamic and custom for a View
.
So no definite answer from me, but maybe it helps ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With