2015-07-28 19 views
6

Diciamo che ho creato una vista personalizzata chiamata MyView e voglio usarla nell'xml e la vista si trova nel pacchetto com.example. Ho bisogno di fare qualcosa di simile:È possibile abbreviare i nomi delle viste personalizzate?

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

ho bisogno di scrivere il nome del pacchetto ogni volta che uso la vista. Cosa succede se ho un nome di pacchetto lungo?

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

Che sembra brutto. È possibile abbreviare il nome del pacchetto? Devo fare qualcosa nel file AndroidManifest.xml?

+1

sicuro: è possibile utilizzare qualsiasi cosa, come ad esempio 'custom.MyView' e utilizzare' LayoutInflater # setFactory [2] ' – pskink

+0

@pskink Can spieghi la soluzione un po 'di più o la metti come risposta? – Sweeper

+0

implementando l'interfaccia 'Factory' /' Factory2' puoi creare le tue visualizzazioni personalizzate in 'onCreateView', javadocs dire: **" Hook puoi fornire che viene chiamato quando si gonfia da un LayoutInflater. Puoi usare questo per personalizzare i nomi dei tag disponibile nei file di layout XML. "** – pskink

risposta

3

definire il proprio spazio dei nomi:

<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 che tutti i tag che iniziano con <x: dovrebbe essere guardato in pacchetto che viene definito nella definizione dello spazio dei nomi (what.a.long.long.long.loooooong.packagename. in questo caso).

È anche possibile utilizzare lo spazio dei nomi all'interno del tag stesso:

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

È possibile utilizzare la mia libreria XmlTag. Ti consente di utilizzare il nome breve di ogni View annotato con @XmlTag.

XmlTag in action

Problemi correlati