2013-04-16 6 views
6

Tworzę preferencje dla mojej aplikacji i zauważyłem, że niektóre przykłady przechowują XML w res/layout, a inne przechowują je w res/xml. Czy istnieje jakiś powód lub najlepsza praktyka do przechowywania ich w jednym kontra drugim? Mam już kilka plików układu w folderze res/layout, więc czy sensowne jest umieszczanie plików układu preferencji w res/xml?Kiedy używać res/xml vs.res/layout folderów w Androidzie

+2

Preferencje = res/xml; Inne układy = res/layout – gauravsapiens

Odpowiedz

6

Preferencje xmls należy umieścić w folderze res/xml. res/layout jest tylko dla układu xmls.

+0

Ale czy nie jest to xml dla preferencji, który jest również uważany za układ? Jego układ dla aktywności UI preferencji. –

+1

podczas tworzenia niestandardowych preferencji z niestandardowym układem tylko wtedy, który będzie układem i może być umieszczony w res/layout – stinepike

2

Najlepsze praktyki dotyczące położenia pliku XML Preference muszą być zgodne z podanymi here: "Musisz zapisać plik XML w katalogu res/xml /. Chociaż możesz nazwać plik, który chcesz, to tradycyjnie nazywa się on preferences.xml".

Chociaż nie mogłem znaleźć weryfikacji, niestandardowy obszar nazw dla aplikacji to nazwa pakietu określona w pliku AndroidManifest.xml.

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

tej można użyć nazw dla niestandardowych atrybutów XML, które odwołują się do kontroli celnych i preferencji. Na przykład, to coś takiego w pliku XML:

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

W tym samym pliku XML zawierają niektóre niestandardowe składnika:

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

someAttr nadal musi być zdefiniowana w folderze wartości w plik attr.xml. Attr jest zadeklarowana w stylu dla składnika w następujący sposób:

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

W klasie, która określa komponent lub niestandardowe preferencje masz atrybuty używając:

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

Dziękuję za to wyjaśnienie. – Deses

3

This wynosi od Google.

użyj polecenia res/xml/dla dowolnych plików XML, które można odczytać pod runtime, wywołując metodę Resources.getXML().

Powiązane problemy