关于在引用资源时使用@还是?的问题,我们在设置style的时候既可以使用@也可以使用?, 例如android:textAppearance="@andorid:style/TextAppearance.Medium",
android:textAppearance="?android:attr/textAppearanceMedium"
使用@表示使用固定的style,而不会跟随Theme改变,这个style可以在style.xml中找到。
而?表示从Theme中查找引用的资源名
declare-styleable标签的作用:方便在程序中获取该标签下的属性数组。可以通过R.styleable.name方式获取属性数组,可以通过R.styleable.styleablename_attrname获取某一个属性。
获取方式不同,在declare-styleable标签内的属性可以作为一个数值,一次获取。
网上查了一下说名字空间的名字可以随便起,可是我尝试了却不行。
比如attrs.xml中定义了一些属性
<declare-styleable name="ProgressWheel">
<attr name="text" format="string" />
<attr name="textColor" format="color" />
<attr name="textSize"format="dimension" />
<attr name="barColor" format="color" />
</declare-styleable>
布局文件中自定义名字空间
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:progre="http://schemas.android.com/apk/res-auto"
……
>
<com.todddavies.components.progressbar.progre
android:layout_width="100dp"
android:layout_height="100dp"
progre:barColor="#FF5601"
progre:textColor="#222222"
/>
</RelativeLayout>
我这边将ProgressWheel换成progre程序报错说是找不到资源progre。
我使用ProgressWheel作为名字空间就没有问题。