常见问题杂记
1.3 引用资源时使用@还是?的问题
关于在引用资源时使用@还是?的问题,我们在设置style的时候既可以使用@也可以使用?, 例如android:textAppearance="@andorid:style/TextAppearance.Medium",
android:textAppearance="?android:attr/textAppearanceMedium"
使用@表示使用固定的style,而不会跟随Theme改变,这个style可以在style.xml中找到。
而?表示从Theme中查找引用的资源名
1.3.1 attrs.xml常见问题:
1.3.1_1、<declare-styleable> 这个标签的作用到底是什么??
declare-styleable标签的作用:方便在程序中获取该标签下的属性数组。可以通过R.styleable.name方式获取属性数组,可以通过R.styleable.styleablename_attrname获取某一个属性。
1.3.1_2、包含在<declare-styleable>标签内的属性和不包含在该标签内的属性有什么区别??
获取方式不同,在declare-styleable标签内的属性可以作为一个数值,一次获取。
1.3.3_3、布局文件中自定义名字空间可以随便起前缀名字吗??
网上查了一下说名字空间的名字可以随便起,可是我尝试了却不行。
比如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作为名字空间就没有问题。