2015-07-28 83 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

相关问题