我们正在使用一个包含所有样式(例如字母间距)的库。由于我们需要正确使用TextAppearance,因此这在我们的自定义视图中引起了一些问题。
我正在通过XML传递TextAppearance,并尝试在绘画上使用它的属性。这可以与其他属性一起使用,例如文本大小和FontTypeFace,但由于缺少textAppearanceSpan.getLetterSpacing()
函数而无法使用。
XML通过声明的可样式化传递
attrs.xml
<declare-styleable name="MyCustomView">
<attr name="TextAppearance" />
</declare-styleable>
layout.xml
<MyCustomView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:TextAppearance="?attr/TextAppearanceBig" />
然后我阅读这些内容
MyCustomView.java
Paint mPaint;
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0);
int textAppearanceID = typedArray.getResourceId(R.styleable.MyCustomView_TextApperance);
TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(context, textApperanceID);
mPaint = new Paint();
mPaint.setTextSize(textAppearanceSpan.getTextSize());
mPaint.setTypeface(Typeface.create(textAppearanceSpan.getFamily(), Typeface.NORMAL);
}
@Override
protected synchronized void onDraw(Canvas canvas){
canvas.drawText("Hello World", 0, 0, mPaint);
}
我想做mPaint.setLetterSpacing(textAppearanceSpan.getLetterSpacing())
,但是功能textAppearanceSpan.getLetterSpacing()
不存在。
答案 0 :(得分:0)
getLetterSpacing()是Paint类的方法,因此可以将其与paint
对象一起使用。
其默认值为0
setLetterSpacing (float letterSpacing)是TextView
的方法
谢谢。