大家好我正在尝试使用字体实现自定义TextView。我决定使用RobotoTextView。我在资产中也有字体文件夹。我在{i = {}}获得了错误。
错误:
AGPBI:{" kind":"错误","文字":"不允许字符串类型(at \ u0027typeface \ u0027有价值 \ u0027robotoLight \ u0027)""来源":[{"文件":"路径/到/文件/ thisxml.xml"&# 34;位置" {" STARTLINE":32," STARTCOLUMN":33,"开始偏移":1357," ENDCOLUMN&#34 ;: 44," endOffset":1368}}],"原":""}
任何帮助都将不胜感激。
我的自定义TextView布局
**custom:typeface="robotoLight"**
以下是具有styleable的属性文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/my.package.name"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#99f9fafa"
android:padding="0dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#99f9fafa"
android:orientation="vertical"
android:padding="0dp" >
<ImageView
android:id="@+id/bigImage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/noproperty"/>
<utils.RobotoTextView
android:id="@+id/propertyPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="Product Name"
android:textColor="@color/main_color_grey_800"
android:textSize="14sp"
custom:typeface="robotoLight"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/main_purple"/>
<!--android:background="@color/main_color_500" />-->
</LinearLayout>
我的班级自定义文本视图 公共类RobotoTextView扩展了TextView {
<declare-styleable name="RobotoTextView">
<attr name="typeface" format="enum">
<enum name="robotoBlack" value="0" />
<enum name="robotoBlackItalic" value="1" />
<enum name="robotoBold" value="2" />
<enum name="robotoBoldItalic" value="3" />
<enum name="robotoBoldCondensed" value="4" />
<enum name="robotoBoldCondensedItalic" value="5" />
<enum name="robotoCondensed" value="6" />
<enum name="robotoCondensedItalic" value="7" />
<enum name="robotoItalic" value="8" />
<enum name="robotoLight" value="9" />
<enum name="robotoLightItalic" value="10" />
<enum name="robotoMedium" value="11" />
<enum name="robotoMediumItalic" value="12" />
<enum name="robotoRegular" value="13" />
<enum name="robotoThin" value="14" />
<enum name="robotoThinItalic" value="15" />
</attr>
</declare-styleable>
答案 0 :(得分:1)
更改以下代码
<declare-styleable name="RobotoTextView">
<attr name="typeface" format="enum">
<enum name="robotoBlack" value="0" />
<enum name="robotoBlackItalic" value="1" />
<enum name="robotoBold" value="2" />
<enum name="robotoBoldItalic" value="3" />
<enum name="robotoBoldCondensed" value="4" />
<enum name="robotoBoldCondensedItalic" value="5" />
<enum name="robotoCondensed" value="6" />
<enum name="robotoCondensedItalic" value="7" />
<enum name="robotoItalic" value="8" />
<enum name="robotoLight" value="9" />
<enum name="robotoLightItalic" value="10" />
<enum name="robotoMedium" value="11" />
<enum name="robotoMediumItalic" value="12" />
<enum name="robotoRegular" value="13" />
<enum name="robotoThin" value="14" />
<enum name="robotoThinItalic" value="15" />
</attr>
</declare-styleable>
到这个
<declare-styleable name="RobotoTextView">
<attr name="typeface" />
</declare-styleable>
<attr name="typeface" format="enum">
<enum name="robotoBlack" value="0" />
<enum name="robotoBlackItalic" value="1" />
<enum name="robotoBold" value="2" />
<enum name="robotoBoldItalic" value="3" />
<enum name="robotoBoldCondensed" value="4" />
<enum name="robotoBoldCondensedItalic" value="5" />
<enum name="robotoCondensed" value="6" />
<enum name="robotoCondensedItalic" value="7" />
<enum name="robotoItalic" value="8" />
<enum name="robotoLight" value="9" />
<enum name="robotoLightItalic" value="10" />
<enum name="robotoMedium" value="11" />
<enum name="robotoMediumItalic" value="12" />
<enum name="robotoRegular" value="13" />
<enum name="robotoThin" value="14" />
<enum name="robotoThinItalic" value="15" />
</attr>
答案 1 :(得分:1)
xmlns:custom="http://schemas.android.com/apk/res/my.package.name"
是添加自定义命名空间的旧样式。尝试使用以下内容自动替换正确的包 -
xmlns:custom="http://schemas.android.com/apk/res-auto"