9

我正在为我的应用程序创建首选项,并注意到一些示例将 XML 存储在 res/layout 中,而其他示例将它们存储在 res/xml 中。是否有理由或最佳实践将它们存储在一个与另一个中?我的 res/layout 文件夹中已经有一堆布局文件,那么将首选项布局文件放在 res/xml 中是否有意义?

4

3 回答 3

10

Prefereces xmls 应该放在 res/xml 文件夹中。res/layout 仅适用于布局 xml。

于 2013-04-16T02:28:28.263 回答
5

是来自谷歌。

将 res/xml/ 用于可在运行时通过调用 Resources.getXML()读取的任意 XML 文件。

于 2014-08-12T09:57:35.567 回答
2

Preference XML 文件位置的最佳实践必须如此处所述 “您必须将 XML 文件保存在 res/xml/ 目录中。尽管您可以为文件命名任何您想要的名称,但它通常命名为preferences.xml”。

虽然我找不到验证,但您的应用程序的自定义命名空间是 AndroidManifest.xml 文件中指定的包名称。

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

您可以将此命名空间用于引用自定义控件和首选项的自定义 XML 属性。例如,在 XML 文件中包含如下内容:

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

在同一个 XML 文件中包含一些自定义组件:

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

someAttr 仍然需要在 attr.xml 文件的 values 文件夹中定义。attr 在组件的样式中声明如下:

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

在定义自定义组件或首选项的类中,您可以使用以下方式获取属性:

mDefaultValue = attrs.getAttributeIntValue(
"http://schemas.android.com/apk/res/com.mydomain.app", ATTR_DEFAULT_VALUE, 50);
于 2013-05-13T15:37:38.570 回答