Custom ListView - 如何将attrs.xml设置为命名空间

时间:2013-01-10 09:25:25

标签: android

我按照this指南为我的应用制作了自定义ListView。本教程使用名为ottasee的命名空间,该命名空间应定义为元素内的xml命名空间。所以这是我的一些代码:

 <com.my.app.Layout.CustomListView
            xmlns:ottasee="what_should_i_put_here?"
            android:id="@+id/lastCases"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:divider="@null"
            android:scrollbars="none"
            ottasee:dropShadowBottom="true"
            ottasee:dropshadowrightsrc="@drawable/drop_shadow"
            />

我可以看到属性ottasee:dropShadowBottomottasee:dropshadowrightsrc属于values文件夹中attrs.xml的一部分。像这样:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
 <declare-styleable name="DropShadowListView">
     <attr format="boolean" name="dropShadowLeft"></attr>
     <attr format="reference" name="dropShadowLeftSrc"></attr>
     <attr format="boolean" name="dropShadowRight"></attr>
     <attr format="reference" name="dropShadowRightSrc"></attr>
     <attr format="boolean" name="dropShadowTop"></attr>
     <attr format="reference" name="dropShadowTopSrc"></attr>
     <attr format="boolean" name="dropShadowBottom"></attr>
     <attr format="reference" name="dropShadowBottomSrc"></attr>
 </declare-styleable>
</resources>

如何为ListView定义xml名称空间以便从attrs.xml文件中获取属性?

谢谢!

修改

我的CustomListView位于包com.my.app.Layout下,我尝试以这种方式声明ns:xmlns:ottasee="http://schemas.android.com/apk/res/com.my.app.Layout

但我只在xml文件中出错:

Multiple annotations found at this line:
    - error: No resource identifier found for attribute 'dropShadowBottom' in package 
     'com.my.app.Layout'
    - error: No resource identifier found for attribute 'dropshadowrightsrc' in package 
     'com.my.app.Layout'

如何设置正确的ns?

2 个答案:

答案 0 :(得分:2)

您应该添加以下内容以包含命名空间的必要属性: xmlns:ottasee ="http://schemas.android.com/apk/res-auto"

与@ budius的答案略有不同,因为它会为您自动解析包名。

答案 1 :(得分:1)

通常XML编辑器会为你做这件事,我甚至从不担心,但就像那样:

xmlns:ottasee="http://schemas.android.com/apk/res/com.your.package.name"