我将自定义属性样式设为
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="EffectsTextView">
<attr name="strokeWidth" format="float" />
<attr name="strokeMiter" format="float" />
<attr name="strokeColor" format="color" />
</declare-styleable>
</resources>
在布局文件中,我可以使用此自定义属性为此属性指定命名空间:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:effects="http://schemas.android.com/apk/res-auto/com.base.view.EffectsTextView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#40000000" >
<com.base.view.EffectsTextView
android:id="@+id/textView1"
android:layout_width="290dip"
android:layout_height="80dip"
android:layout_marginLeft="5dip"
android:layout_marginTop="16dip"
android:gravity="center"
android:text="SETTINGS"
android:textSize="44dip"
android:textStyle="bold"
effects:strokeWidth="10" /> <--- custom tag "effects"
但是它没有在styles.xml中识别这个自定义标记
<style name="EffectsHeaderTextStyle">
<item name="effects:strokeWidth">10</item>
</style>
错误:找不到与给定名称,效果相匹配的资源,尽管我将命名空间与在RelativeLayout文件中的命名空间相同。
有什么想法吗?感谢
答案 0 :(得分:23)
将您的XML更改为:
xmlns:effects="http://schemas.android.com/apk/res/com.base.view.EffectsTextView"
改变你的风格:
<style name="EffectsHeaderTextStyle">
<item name="strokeWidth">10</item>
</style>
我做了类似的字体:
https://github.com/androidfu/CodeExamples/tree/master/com.androidfu.CustomFontsDemo
答案 1 :(得分:0)
Gradle并不建议使用xmln:
中的实际包裹
在Gradle项目中,最终APK中使用的实际包可能会有所不同;例如,您可以在一个版本中添加.debug包后缀而不在另一个版本中添加.debug包后缀。因此,您不应该在资源中硬编码应用程序包;相反,使用特殊的命名空间http://schemas.android.com/apk/res-auto
,这将使工具找出资源的正确命名空间,而不管构建期间使用的实际包。