【发布时间】:2018-05-04 19:35:07
【问题描述】:
我试图创建一个自定义类以将文本实现为可绘制但我无法将Typeface 设置为Paint。
下面是自定义类的代码实现(即TextDrawable)。
这里我想获取Application的上下文来调用方法getAssets(),但是这里我无法调用方法getContext()。
public class TextDrawable extends Drawable {
private final String text;
private final Paint paint;
public TextDrawable(String text) {
this.text = text;
this.paint = new Paint();
paint.setColor(Color.GRAY);
paint.setTextSize(35f);
//paint.setTypeface(Typeface.createFromAsset(**getContext().getAssets()**, "fonts/Montserrat-Regular.otf"));
paint.setAntiAlias(true);
paint.setTextAlign(Paint.Align.RIGHT);
}
@Override
public void draw(Canvas canvas) {
canvas.drawText(text, 0, 10, paint);
}
@Override
public void setAlpha(int alpha) {
paint.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
paint.setColorFilter(cf);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
【问题讨论】:
-
确保您取消注释代码行,如果这是故意的,您可以尝试使用在线工具将 otf 文件转换为 ttf。
-
你到底有什么问题?
-
嗨,@IsmailIqbal 评论是故意的,文件格式没有问题。我无法在此类中获取 getContext().getAssets()
-
我无法在此类@MikeM 中获取getContext().getAssets()。
-
请参考此question 并查看评分最高的答案。
标签: java android android-context android-typeface android-custom-drawable