2011-03-23 4 views
20

안드로이드 레이아웃은 루트 요소에 선언이 네임 스페이스와 XML에 정의되어안드로이드 XML 레이아웃 파일 및 네임 스페이스

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> 
  1. android 접두사입니다 그것 대신에 xmlns="http...을 사용하는 대신에?
  2. 접두사가 속성에만 사용되며 요소에는 사용되지 않는 이유는 무엇입니까?

답변

8

흥미로운 질문! 확실히 이상하게 느껴진다.

  1. Google은 컴파일시 오류를 처리하기 위해 가능한 한 엄격한 이름 공간을 사용하도록 설계했습니다.
  2. 접두어는 요소가 Java 클래스를 나타 내기 때문에 사용되지 않습니다. com.android.widget.TextView (com.android.widget.*은 항상 잘릴 수 있습니다). 이 클래스의 자바 네임 스페이스는 컴파일시 자동으로 해석되므로 완전한 자바 네임 스페이스를 나타내는 xml 네임 스페이스를 환영하지 않습니다. 그러나 속성은 요소의 상속 된 Java 클래스 중 하나에 매핑 될 수 있습니다. 따라서 상속을 허용하는 속성의 네임 스페이스.

이것은 주로 레이아웃이 Java 객체를 설명하고 Google이 레이아웃을 Java 객체와 매핑하는 데 도움이되는 XML 네임 스페이스 메커니즘을 사용하기 때문에 수행됩니다. 그래서 자바 네임 스페이스와 XML 네임 스페이스 사이에는 충돌이 있습니다. 또한 개발자가 요소를 하위 클래스 화하고 플랫폼의 다음 버전이 같은 이름의 속성을 추가 할 것을 염려하지 않고 자체 특성을 추가 할 수 있습니다.

다이앤 Hackborn하여이 블로그 게시물에 두 응답을 참조, 구글에서 일하는 잘 알려진 안드로이드 엔지니어 : http://www.elharo.com/blog/software-development/xml/2008/09/16/android-xml-weirdness/

+0

는 코드에 대한 정말 감사합니다 :) –