なぜこの行xmlns:android =“ http://schemas.android.com/apk/res/android”がレイアウトxmlファイルの最初でなければならないのですか?


回答:


118

XMLでは、xmlnsは名前空間を宣言します。実際、次の場合:

<LinearLayout android:id>
</LinearLayout>

を呼び出す代わりにandroid:id、xmlはhttp://schemas.android.com/apk/res/android:idを使用して一意になります。通常、このページは存在しません(URLではなくURIです)が、使用されている名前空間を説明するURLである場合があります。

名前空間は、Javaアプリケーションのパッケージ名とほとんど同じように使用できます。

ここに説明があります。

Uniform Resource Identifier(URI)

Uniform Resource Identifier(URI)は、インターネットリソースを識別する文字列です。

最も一般的なURIは、インターネットドメインアドレスを識別するUniform Resource Locator(URL)です。別の、あまり一般的ではないタイプのURIは、ユニバーサルリソース名(URN)です。

この例では、URLのみを使用します。


13
android:layout_widthでは、なぜ私たちは単に代わりに持っているのlayout_widthですか?
シャシュワット2013年

4
では、なぜ「android:LinearLayout」の代わりに「LinearLayout」を使用するのでしょうか。
Android開発者

(「xxxの属性はサブ名前空間の一部である:おそらくのLinearLayoutは、ルート名前空間の一部、およびアンドロイドいるのでschemas.android.com/apk/res/android/android/id」
NitroG42

4
もちろん、それはこのURLをフェッチせず、URIです:w3schools.com/xml/xml_namespaces.asp
NitroG42

1
danielmiessler.com/study/url_vs_uriから:「URLはURIの一種です。そのため、URLがURIではないことを誰かが言うと、彼は間違っています。しかし、それはすべてのURIがURLであることを意味するわけではありません。すべての蝶が飛ぶが、飛ぶものすべてが蝶であるわけではありません。URIをURLにする部分は、「アクセスメカニズム」または「ネットワークロケーション」を含めることです。例:http:/、ftp://、ldap://、telnet:/ /など
yonivav

37

xmlns:android=“http://schemas.android.com/apk/res/android”レイアウトxmlファイルの最初の理由を理解するには、例を使用してコンポーネントを理解します

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)

  • コンピューティングでは、ユニフォームリソース識別子(URI)は、リソースの名前を識別するために使用される文字列です。
  • このような識別により、特定のプロトコルを使用して、ネットワーク(通常はWorld Wide Web)を介したリソースの表現との相互作用が可能になります。

例:http://schemas.android.com/apk/res/android:idここのURI


XML名前空間

  • XML名前空間は、XMLドキュメントで一意の名前の要素と属性を提供するために使用されます。xmlns:androidandroid名前空間について説明します。
  • これは、コンパイル時にエラーを処理するためのgoogleによる設計上の選択であるため、このように使用されます。
  • また、android textviewとは異なる機能を持つ独自のウィジェットを作成するとしtextviewます。android名前空間は、カスタムtextviewウィジェットとandroid textviewウィジェットを区別するのに役立ちます

8
この回答は、「なぜ」を明確に説明しなかった上記の回答と比較すると、読む価値があります。
eRaisedToX 2017年

「このような識別により、特定のプロトコルを使用して、ネットワーク、通常はWorld Wide Web上のリソースの表現との相互作用が可能になります。例:schemas.android.com/apk/res/android : idは、ここのURIです」-しかし、インターネット接続がない場合、このandroid名前空間はネットワークを介してリソースとどのように相互作用しますか?
kavie 2017年

29

xmlnsはXML名前空間を指します

XMLで接頭辞を使用する場合、接頭辞のいわゆる名前空間を定義する必要があります。名前空間は、要素の開始タグのxmlns属性によって定義されます。名前空間宣言の構文は次のとおりです。xmlns:prefix = "URI"。

:名前空間URIは、情報を検索するためにパーサーで使用されません。

名前空間に一意の名前を付けることが目的です。ただし、多くの場合、企業は名前空間を、名前空間情報を含むWebページへのポインタとして使用します。


7

これは単なるXML名前空間宣言です。下記の属性がAndroidに属していることを指定するために、この名前空間を使用します。したがって、「android:」で始まります

実際に独自のカスタム属性を作成できます。したがって、2つの属性に同じ名前が付けられていても動作が異なるという名前の競合を防ぐために、接頭辞「android:」を追加して、これらがAndroid属性であることを示します。

したがって、この名前空間宣言は、XMLファイルのルートビューの開始タグに含める必要があります。


シンプルで明確。私は他の答えについては知りませんが、あなたの答えは私の混乱のマグネットのように機能し、私のコンセプトは今や明らかです。
スタックオーバーフロー


3
  • Xmlnsはxml名前空間を意味します。
  • XMLでの名前の競合を回避するために作成されます。
  • 他の方法による名前の競合を回避するために、各要素に接頭辞を付ける必要があります。
  • 各xmlタグでの接頭辞の繰り返し使用を避けるために、xmlのルートでxmlnsを使用します。したがって、タグxmlns:android =” http://schemas.android.com/apk/res/android ”があります。
  • ここでのandroidは、名前空間「http://schemas.android.com/apk/res/android」を割り当てることを意味します。
  • この名前空間はURLではなく、URIの代わりに使用されることの少ないURN(ユニバーサルリソース名)としても知られるURIです。
  • このため、androidはxml:xxxxxxxなどのxmlドキュメント内のandroid関連要素を識別する責任があります。この名前空間がないと、android:xxxxxxxは認識されません。

素人の言葉で言えば:

xmlns:android =なしhttp://schemas.android.com/apk/res/android」android関連タグは、レイアウトのxmlドキュメントで認識されません。


2

XMLでは、要素名は開発者が定義します。これにより、さまざまなXMLアプリケーションからのXMLドキュメントを混合しようとすると、競合が発生することがよくあります。ユーザーまたはXMLアプリケーションは、これらの違いを処理する方法を知りません。XMLでの名前の競合は、名前の接頭辞を使用して簡単に回避できます。XMLで接頭辞を使用する場合は、接頭辞の名前空間を定義する必要があります。名前空間は、要素の開始タグのxmlns属性で定義できます。名前空間宣言の構文は次のとおりです。xmlns:prefix = "URI"。


2
xmlns:android="http://schemas.android.com/apk/res/android"

これはxmlns:android = "@ + / id"の形式です。次に、それを参照するために、例を使用します

android:layout_width="wrap_content"
android:text="Hello World!"

別のxmlnsは

 xmlns:app="http://schemas.android.com/apk/res-auto"

これはxmlns:app = "@ + / id"の形式であり、その使用法は以下のとおりです。

 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintLeft_toLeftOf="parent"

2

独自の属性を作成でき、ユーザー指定の属性がAndroidの属性と同じである場合、名前空間の競合を回避できるため、名前空間で明らかになると思います。


2

xmlns:androidこれは、Androidでandroid名前空間を定義するための開始タグです。これは、android google developerによって定義された標準の規約です。デフォルトまたはカスタムを使用してレイアウトしている場合は、この名前空間を使用する必要があります。

Android名前空間を定義します。この属性は常に「http://schemas.android.com/apk/res/android」に設定する必要があります。

<manifes>要素のドキュメントから。


1
xmlns:android="http://schemas.android.com/apk/res/android" 

xmlns:はxml名前空間であり、URL: " http://schemas.android.com/apk/res/android "は他に何もありません

[XMLスキーマ定義]であるXSD:XMLファイルのルールを定義するために使用されます。

例:

<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> 

どのような種類のルールについて説明させてください

  1. 上記のXMLファイルでは、レイアウトに既にlayout_widthを定義しています。同じ属性を2回目に定義すると、エラーが発生します。
  2. EditTextがありますが、別のEditTextを追加する場合は問題ありません。

このような種類のルールは、XML XSDで定義されています: " http://schemas.android.com/apk/res/android "

少し遅れますが、これがお役に立てば幸いです。


0

これは、減速されるビューグループ内の属性がAndroid関連であることを指定するためのXML名前空間宣言です。


さらに詳しく説明してください
Pramod S. Nikam 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.