2014-04-04 169 views
0

是不可能簡化活動XML文件中的自定義元素的名稱?Android XML元素和命名空間

<com.library.CustomView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res/com.example.library.customview" 
     android:id="@+id/myView" 
     app:newAttr="value" /> 

說例如我有一個CustomView控件。我是否總是需要放置「com.library」。在「CustomView」前面,還是可以在FrameLayout中使用xmlns:custom,這樣我就不需要了?

這是我想看到什麼(如果可能):

<CustomView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res/com.example.library.customview" 
     android:id="@+id/myView" 
     app:newAttr="value" /> 

回答

1

號必須指定自定義視圖類的完全限定名。自定義屬性屬於不同的名稱空間。所以,你孃家有

http://schemas.android.com/apk/res/[your package name]. 

這就是爲什麼你必須

xmlns:app="http://schemas.android.com/apk/res/com.example.library.customview" 

有必要指定自定義視圖的全名,因此

<com.library.CustomView 

http://developer.android.com/training/custom-views/create-view.html

文檔沒有提及任何其他解決方案。

編輯:

似乎有一個解決方法,如下面的鏈接中所述。注意兩個答案。作者認爲有一點涉及到的開銷。因此,它使您可以使用下面的內容,但我建議您遵循文檔中提到的上述方法。

Using custom Views in XML without using fully-qualified class name

+0

感謝您的澄清。我會堅持完全合格的名字。我想它確實使事情更清楚..即使它不是'整潔':) – SparkyNZ