왜이 줄 xmlns : android =“http://schemas.android.com/apk/res/android”가 레이아웃 xml 파일에서 첫 번째 여야합니까?


답변:


118

XML에서 xmlns는 네임 스페이스를 선언합니다. 실제로, 할 때 :

<LinearLayout android:id>
</LinearLayout>

을 호출하는 대신 android:idxml은 http://schemas.android.com/apk/res/android:id 를 사용합니다 . 를 고유 합니다. 일반적으로이 페이지는 존재하지 않지만 (URL이 아닌 URI 임) 때때로 사용 된 네임 스페이스를 설명하는 URL입니다.

네임 스페이스는 Java 애플리케이션의 패키지 이름과 거의 동일한 용도로 사용됩니다.

여기 에 설명이 있습니다.

URI (Uniform Resource Identifier)

URI (Uniform Resource Identifier)는 인터넷 리소스를 식별하는 문자열입니다.

가장 일반적인 URI는 인터넷 도메인 주소를 식별하는 URL (Uniform Resource Locator)입니다. 일반적이지 않은 URI의 또 다른 유형은 URI (Universal Resource Name)입니다.

이 예에서는 URL 만 사용합니다.


13
그렇다면 왜 우리는 android:layout_width그냥 대신에 layout_width있습니까?
Shashwat

4
그렇다면 "android : LinearLayout"대신 "LinearLayout"을 어떻게 사용합니까?
안드로이드 개발자

LinearLayout이 루트 네임 스페이스의 일부이고 android : xxx 속성이
하위

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>

URI (Uniform Resource Indicator) :

  • 컴퓨팅에서 URI (Uniform Resource Identifier)는 리소스 이름을 식별하는 데 사용되는 문자열입니다.
  • 이러한 식별은 특정 프로토콜을 사용하여 네트워크, 일반적으로 월드 와이드 웹을 통해 리소스 표현과 상호 작용할 수 있습니다.

예 : http://schemas.android.com/apk/res/android:id여기 URI입니다


XML 네임 스페이스 :

  • XML 네임 스페이스는 XML 문서에서 고유하게 명명 된 요소 및 속성을 제공하는 데 사용됩니다. xmlns:android안드로이드 네임 스페이스를 설명합니다.
  • 컴파일 타임에 오류를 처리하기 위해 Google에서 디자인 선택이기 때문에 이와 같이 사용됩니다.
  • 또한 textview안드로이드와 비교하여 다른 기능으로 자체 위젯을 작성한다고 가정하십시오 textview.Android 네임 스페이스는 사용자 정의 textview위젯과 안드로이드 textview위젯 을 구별하는 데 도움이됩니다

8
이 답변은 "WHY?"를 명확하게 설명하지 않은 위의 답변과 비교하여 실제로 읽을 가치가 있습니다.
eRaisedToX

"이러한 식별을 사용하면 특정 프로토콜을 사용하여 네트워크를 통해 일반적으로 월드 와이드 웹을 통해 리소스를 표현할 수 있습니다. 예 : schemas.android.com/apk/res/android:id 는 여기 URI입니다"- 그러나 인터넷에 연결되어 있지 않으면이 안드로이드 네임 스페이스가 네트워크를 통해 리소스와 어떻게 상호 작용합니까?
kavie 2016 년

29

xmlns는 XML 네임 스페이스를 나타냅니다.

XML에서 접두사를 사용하는 경우 접두사에 대한 소위 네임 스페이스를 정의해야합니다. 네임 스페이스는 요소의 시작 태그에서 xmlns 속성으로 정의됩니다. 네임 스페이스 선언에는 다음과 같은 구문이 있습니다. xmlns : prefix = "URI".

노트 : 네임 스페이스 URI는 구문 분석기에서 정보를 찾는 데 사용되지 않습니다.

목적은 네임 스페이스에 고유 한 이름을 부여하는 것입니다. 그러나 종종 회사는 네임 스페이스 정보를 포함하는 웹 페이지에 대한 포인터로 네임 스페이스를 사용합니다.


7

이것은 XML 네임 스페이스 선언 일뿐입니다. 이 네임 스페이스를 사용하여 아래에 나열된 속성이 Android에 속하도록 지정합니다. 따라서 그들은 " android : "로

실제로 사용자 정의 속성을 작성할 수 있습니다. 따라서 두 속성의 이름이 같지만 다르게 동작하는 이름 충돌을 방지하기 위해 접두사 " android : "를 이것이 Android 속성임을 나타냅니다.

따라서이 네임 스페이스 선언은 XML 파일 루트보기의 여는 태그에 포함되어야합니다.


간단하고 명확합니다. 나는 다른 답변에 대해 모르겠지만 귀하의 답변은 혼란에 대한 자석처럼 작동하며 내 개념은 분명합니다.
스택 오버플로


3
  • Xmlns는 XML 네임 스페이스를 의미합니다.
  • XML에서 이름 충돌을 피하기 위해 작성되었습니다.
  • 다른 방법으로 이름 충돌을 피하려면 각 요소에 접두사를 제공해야합니다.
  • 각 xml 태그에서 접두사를 반복적으로 사용하지 않도록 xml의 루트에서 xmlns를 사용합니다. 따라서 xmlns : android =” http://schemas.android.com/apk/res/android 태그가 있습니다
  • 이제 안드로이드는 단순히 " http://schemas.android.com/apk/res/android 네임 스페이스를 할당한다는 의미입니다 . " 입니다.
  • 이 네임 스페이스는 URL이 아니라 URI 대신 거의 사용되지 않는 URN (범용 리소스 이름)으로 알려진 URI입니다.
  • 이 안드로이드로 인해 XML 문서에서 android : xxxxxxx 등의 Android 관련 요소를 식별해야합니다.이 네임 스페이스가 없으면 android : xxxxxxx가 인식되지 않습니다.

평신도의 용어를 쓰려면 :

xmlns : android =” http://schemas.android.com/apk/res/android ” 없이는 Android 관련 태그가 Google 레이아웃의 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 네임 스페이스를 정의합니다. 이 속성은 항상 " 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. EditText가 있지만 다른 EditText를 추가하려면 문제가 없습니다.

이러한 종류의 규칙은 XML XSD에 정의되어 있습니다 : " http://schemas.android.com/apk/res/android "

조금 늦었지만 이것이 도움이되기를 바랍니다.


0

감속 된 뷰 그룹 내에있는 속성이 Android 관련임을 지정하기 위해 XML 네임 스페이스 선언입니다.


더 자세히 설명해주세요
Pramod S. Nikam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.