web-dev-qa-db-ja.com

Android xmlファイルで名前空間を指定するのはなぜですか?

Androidでxmlベースのレイアウトを記述する場合、文字列 "xmlns:Android =" http://schemas.Android.com/apk/res/Android "を使用します。

私が読んだ本から、これは名前空間であると書かれていますが、なぜこれを使用するのですか?リンクも存在しません。これの用途は何ですか?

35
Vinoth

Developer.Android.comから

xmlns:Android

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

xmlns:Androidは、このxmlが他の機能ではなくAndroidで使用されていることを識別するためのものです。

名前空間は、コード/ライブラリを一意に識別します。 Android apiなどのすべての同じ名前を使用するAPIを作成する場合、私のAPIとAndroid apiを区別する唯一の方法は、 Android名前空間、または私のものです。

さらに参照することができます http://en.wikipedia.org/wiki/XML_namespace

25
Kartik Domadiya

XMLについて一般的な読み物をすることもできます。 w3.orgのXMLドキュメント が最善です。

ただし、一般的には名前空間を使用して、要素名の衝突を回避します。

たとえば、要素<person>を定義するXMLスキーマを作成し、友人が偶然<person>という名前のまったく異なる要素を定義する別のXMLスキーマを作成した場合、衝突が発生する可能性があります。 XMLファイルで両方の要素を参照しようとした場合、どちらがどれであるかを判別する方法はありません。ただし、名前空間を使用する場合、myNamespace:personはmyFriendsNamespace:personとは明らかに異なります。

名前空間を定義するための標準は、URIを使用することです。そのため、Android定義で確認できます。これは、必ずしもその場所にスキーマが存在することを意味するのではなく、URIその名前空間の一意の名前です。

20
tschaible

参照するので、Android XMLでキーを定義します。したがって、リソースは名前空間でキーを識別します。これが、すべてのAndroid XMLで名前空間を定義する理由です。次のようなファイル:-"xmlns:Android="http://schemas.Android.com/apk/res/Android".

xMLでは、Androidタグを使用して次のようにキーを参照できます:-

<FrameLayout
        Android:id="@+id/id"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="@color/color">

Android名前空間を使用すると、キーを見つけることができますidlayout_width およびlayout_height

詳細については、 ここ を参照してください。

2
Avi

リンクが存在しないことは事実です。しかし、使用している文字列は名前空間を宣言するためのものです... XMLでは、名前空間は名前の競合を回避するために使用されます。詳細については、このリンクを参照してください http://www.w3schools.com/XML/xml_namespaces.asp

1
Jaydeep Khamar