2013-04-16 14 views
6

Sto creando le preferenze per la mia app e notato alcuni esempi memorizzano l'XML in res/layout e altri li memorizzano in res/xml. C'è una ragione o una buona pratica per archiviarli in uno contro l'altro? Ho già un sacco di file di layout nella mia cartella res/layout, quindi ha senso mettere i file di layout delle preferenze in res/xml?Quando utilizzare le cartelle res/x vsres/layout in Android

+2

Preferenze = res/xml; Altri layout = res/layout – gauravsapiens

risposta

6

Gli xml di Preferimenti devono essere collocati nella cartella res/xml. res/layout è solo per layout xmls.

+0

Ma l'xml per le preferenze non è considerato layout? Il suo layout per l'attività dell'interfaccia utente delle preferenze. –

+1

quando crei le preferenze personalizzate con il layout personalizzato, solo quello sarà un layout e può essere inserito in res/layout – stinepike

2

Best practice per la preferenza Il percorso del file XML deve essere come indicato here: "È necessario salvare il file XML nella directory res/xml. Sebbene sia possibile denominare il file tutto ciò che si desidera, è tradizionalmente denominato preferences.xml".

Sebbene non sia stato possibile trovare la verifica, lo spazio dei nomi personalizzato per l'applicazione è il nome del pacchetto specificato nel file AndroidManifest.xml.

xmlns:android="http://schemas.android.com/apk/res/android" package="com.mydomain.app"

È possibile utilizzare questo spazio dei nomi per gli attributi XML personalizzati che fanno riferimento a controlli personalizzati e preferenze. Per esempio, includere qualcosa di simile nel file XML:

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myname="http://schemas.android.com/apk/res/com.mydomain.app"

In questo stesso file XML includono qualche componente personalizzato:

<com.mydomain.app.MyListPreference 
     android:key="pref_item1" 
     android:title="@string/item1" 
     android:summary="@string/pref_mysummary" 
     myname:someAttr="500" /> 

Il someAttr deve ancora essere definita all'interno della cartella valori un file attr.xml. L'attr è dichiarata all'interno di uno stile per il componente come segue:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="com.mydomain.app.MyListPreference"> 
     <attr name="someAttr" format="integer" /> 
    </declare-styleable> 
</resources> 

Nella classe che definisce il componente personalizzato o preferenza che si ottiene utilizzando gli attributi:

mDefaultValue = attrs.getAttributeIntValue(
"http://schemas.android.com/apk/res/com.mydomain.app", ATTR_DEFAULT_VALUE, 50); 
+0

Grazie per questa spiegazione. – Deses

3

This da Google.

utilizza res/xml/per file XML arbitrari che possono essere letti al runtime chiamando Resources.getXML().

Problemi correlati