2015-07-28 86 views
6

假設我創建了一個名爲MyView的自定義視圖,並且想要在xml中使用它,並且視圖位於com.example包中。我需要做這樣的事情:是否可以縮短自定義視圖名稱?

<com.example.MyView 
    ...... 
/> 

我要寫包名時間我使用的視圖。如果我有很長的包名稱怎麼辦?

<what.a.long.long.long.loooooong.packagename.MyView 
    ...... 
/> 

這看起來很醜。是否有可能縮短包名?我需要在AndroidManifest.xml文件中做些什麼嗎?

+1

肯定的:你可以使用任何東西,例如像'custom.MyView'和使用'LayoutInflater#setFactory [2]' – pskink

+0

@pskink燦你多解釋一下解決方案還是將它作爲答案發布? – Sweeper

+0

通過實現'Factory' /'Factory2'接口,您可以在'onCreateView'中創建自定義視圖,javadocs說:**「您可以提供從LayoutInflater膨脹時調用的鉤子。可以使用它來自定義標籤名稱可在您的XML佈局文件中找到。「** – pskink

回答

3

定義你自己的命名空間:即與<x:啓動所有標籤應在包中查找

<Layout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:x="what.a.long.long.long.loooooong.packagename." 
    > 
    <x:MyView> 
    </x:MyView> 
</Layout> 

xmlns:x spefifies被命名空間中的定義(what.a.long.long.long.loooooong.packagename.在這種情況下)定義。

你甚至可以使用標籤內的命名空間:

<x:MyView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:x="what.a.long.long.long.loooooong.packagename." 
    /> 
1

您可以使用我的圖書館XmlTag。它允許您使用您使用@XmlTag註釋的每個View的短名稱。

XmlTag in action

相關問題