我目前正在构建一个库项目,我在XML属性方面遇到了一些问题。在库模块中我创建了declare-styleable in attrs.xml
<resources>
<declare-styleable name="betterTextViewAttrs">
<attr name="typefaceAsset" format="string"/>
<attr name="scaleWithinBounds" format="boolean"/>
</declare-styleable>
并且我想在项目的示例布局中引用attrs。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bettertv="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.virtualprodigy.bettertextviewsample.MainActivity">
<com.virtualprodigy.bettertextview.BetterTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
bettertv:typefaceAsset="dancing _script.ttf"
bettertv:scaleWithinBounds="false"
app:layout_constraintBottom_toBottomOf="@+id/activity_main"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
app:layout_constraintRight_toRightOf="@+id/activity_main"
app:layout_constraintTop_toTopOf="@+id/activity_main" />
但由于某种原因xmlns:bettertv="http://schemas.android.com/apk/res-auto"
不工作。当我编译时,我得到以下错误:
Error:(11) No resource identifier found for attribute 'typefaceAsset' in package 'com.virtualprodigy.bettertextviewsample'
完整的源代码可以在GitHub上找到。如有任何帮助,不胜感激。
BetterTextView GitHub Project
在盯着我的项目后,我意识到了这个问题。即使Android Studio通过GUI为您创建了一个库项目,它也不会自动在build.gradle
文件中添加compile project(':bettertextview')
。更新这个完全解决了这个问题。