Reputation: 2886
Why is this line needed in xml layout file?
xmlns:android="http://schemas.android.com/apk/res/android"
Upvotes: 181
Views: 246966
Reputation: 864
Below important point is missing in above answers,
When we declare xmlns:android="http://schemas.android.com/apk/res/android” in the root of xml file, then all the attributes and tags that are already attached to this namespace will be imported .
So next time when we give android: then autocomplete list occurs.
Upvotes: 1
Reputation: 3332
xmlns:android
Defines the Android namespace. This attribute should always be set to "
http://schemas.android.com/apk/res/android
".
refer https://developer.android.com/guide/topics/manifest/manifest-element#nspace
Upvotes: 6
Reputation: 458
xmlns:android
This is start tag for define android namespace in Android. This is standerd convention define by android google developer. when you are using and layout default or custom, then must use this namespace.
Defines the Android namespace. This attribute should always be set to "
http://schemas.android.com/apk/res/android
".
From the <manifest>
element documentation.
Upvotes: 2
Reputation: 348
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns : is xml name space and the URL : "http://schemas.android.com/apk/res/android" is nothing but
XSD which is [XML schema definition] : which is used define rules for XML file .
Example :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:hint="User Name"
/>
</LinearLayout>
Let me explain What Kind of Rules ? .
Such Kind of Rules are define in XML XSD : "http://schemas.android.com/apk/res/android"
little bit late but I hope this helps you .
Upvotes: 1
Reputation: 590
I think it makes clear with the namespace, as we can create our own attributes and if the user specified attribute is the same as the Android one it avoid the conflict of the namespace.
Upvotes: 2
Reputation: 1142
xmlns:android="http://schemas.android.com/apk/res/android"
This is form of xmlns:android ="@+/id". Now to refernce it we use for example
android:layout_width="wrap_content"
android:text="Hello World!"
Another xmlns is
xmlns:app="http://schemas.android.com/apk/res-auto"
which is in form of xmlns:app = "@+/id" and its use is given below
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
Upvotes: 2
Reputation: 11
It is a XML name space declaration in order to specify that the attributes that are within the view group that it's decelerated in are android related.
Upvotes: 0
Reputation: 4293
To put in layman’s term :
without xmlns:android=”http://schemas.android.com/apk/res/android” android related tags wont be recognized in the xml document of our layout.
Upvotes: 6
Reputation: 21
In XML, element names are defined by the developer. This often results in a conflict when trying to mix XML documents from different XML applications. A user or an XML application will not know how to handle these differences. Name conflicts in XML can easily be avoided using a name prefix. When using prefixes in XML, a namespace for the prefix must be defined.The namespace can be defined by an xmlns attribute in the start tag of an element.The namespace declaration has the following syntax. xmlns:prefix="URI".
Upvotes: 2
Reputation: 91
This is just the XML Name Space declaration. We use this Name Space in order to specify that the attributes listed below, belongs to Android. Thus they starts with "android:"
You can actually create your own custom attributes. So to prevent the name conflicts where 2 attributes are named the same thing, but behave differently, we add the prefix "android:" to signify that these are Android attributes.
Thus, this Name Space declaration must be included in the opening tag of the root view of your XML file.
Upvotes: 9
Reputation: 42854
To understand why xmlns:android=“http://schemas.android.com/apk/res/android”
must be the first in the layout xml file We shall understand the components using an example
Sample
::
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container" >
</FrameLayout>
Uniform Resource Indicator(URI):
Ex:http://schemas.android.com/apk/res/android:id
is the URI here
xmlns:android
describes the android
namespace.textview
widget with different
features compared to android textview
, android namespace helps to
distinguish between our custom textview
widget and android
textview
widgetUpvotes: 46
Reputation: 5356
In XML, xmlns declares a Namespace. In fact, when you do:
<LinearLayout android:id>
</LinearLayout>
Instead of calling android:id
, the xml will use http://schemas.android.com/apk/res/android:id to be unique. Generally this page doesn't exist (it's a URI, not a URL), but sometimes it is a URL that explains the used namespace.
The namespace has pretty much the same uses as the package name in a Java application.
Here is an explanation.
Uniform Resource Identifier (URI)
A Uniform Resource Identifier (URI) is a string of characters which identifies an Internet Resource.
The most common URI is the Uniform Resource Locator (URL) which identifies an Internet domain address. Another, not so common type of URI is the Universal Resource Name (URN).
In our examples we will only use URLs.
Upvotes: 128
Reputation: 16622
xmlns refers to the XML namespace
When using prefixes in XML, a so-called namespace for the prefix must be defined. The namespace is defined by the xmlns attribute in the start tag of an element. The namespace declaration has the following syntax. xmlns:prefix="URI".
Note: The namespace URI is not used by the parser to look up information.
The purpose is to give the namespace a unique name. However, often companies use the namespace as a pointer to a web page containing namespace information.
Upvotes: 30