如何使用库具有的自定义属性?

时间:2014-07-31 18:34:33

标签: android android-xml android-library

我在我的项目中添加了一个项目库,它在attrs.xml中定义了一些自定义属性如何使用这些属性?

图书馆代码: attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="NumberProgressBar">
        <attr name="progress" format="integer"/>
        <attr name="max" format="integer"/>

        <attr name="progress_unreached_color" format="color"/>
        <attr name="progress_reached_color" format="color"/>

        <attr name="progress_reached_bar_height" format="dimension"/>
        <attr name="progress_unreached_bar_height" format="dimension"/>

        <attr name="progress_text_size" format="dimension"/>
        <attr name="progress_text_color" format="color"/>

        <attr name="progress_text_offset" format="dimension"/>

        <attr name="progress_text_visibility" format="enum">
            <enum name="visible" value="0"/>
            <enum name="invisible" value="1"/>
        </attr>
    </declare-styleable>

    <declare-styleable name="Themes">
        <attr name="numberProgressBarStyle" format="reference"/>
    </declare-styleable>
</resources>

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:widget="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/lessens_listview_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="3dp"
            android:drawableLeft="@drawable/bbb"
            android:drawablePadding="5dp"
            android:text="TextView"
            android:textColor="#000000"
            android:textSize="26dp" />

           <com.daimajia.numberprogressbar.NumberProgressBar
               android:id="@+id/number_progress_bar"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_centerVertical="true"
               android:layout_toRightOf="@+id/lessens_listview_textview"
               android:layout_marginLeft="12dp"
                custom:progress_reached_bar_height="5dp"/>

    </RelativeLayout>

这里我在custom:progress_reached_bar_height="5dp"

中收到错误

因为图书馆的自述文件说我可以使用这样的属性,但我不能。

library自述文件:

<com.daimajia.numberprogressbar.NumberProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        custom:progress_unreached_color="#CCCCCC"
        custom:progress_reached_color="#3498DB"

        custom:progress_unreached_bar_height="0.75dp"
        custom:progress_reached_bar_height="1.5dp"

        custom:progress_text_size="10sp"
        custom:progress_text_color="#3498DB"
        custom:progress_text_offset="1dp"
        custom:progress_text_visibility="visible"

        custom:max="100"
        custom:progress="80"
         />

1 个答案:

答案 0 :(得分:2)

取决于您如何声明命名空间。 在您的情况下,您已声明:

xmlns:widget="http://schemas.android.com/apk/res-auto"

这意味着您可以使用widget作为前缀来调用属性:

widget:progress_reached_bar_height="5dp"

如果要使用custom前缀,请以这种方式更改声明:

xmlns:custom="http://schemas.android.com/apk/res-auto"