我想要的输出:
具有自定义字体的小部件(主屏幕小部件)上的文本
我的问题:
所以我想使用imageview并使用canvas在位图上绘制文本,然后在imageview上设置这个位图。到目前为止,一切正常,但只有两件事。
我不知道,
如何让我的文字在中心垂直和水平设置? (垂直和水平意味着,垂直和水平都在中心)
如何让我的文字填满整个位图空间?
我使用以下代码在小部件上显示一些文字。
Bitmap bitmap = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
canvas.drawPaint(paint);
paint.setColor(Color.GREEN);
paint.setStyle(Style.FILL);
canvas.drawText("Test", 50, 50, paint);
以下是输出。
答案 0 :(得分:1)
1-在小部件中的textview上设置字体运行时
I dont know that either
2-将文本设置在中心并填充容器
Please see the following code:
float size = 1.0f;
Bitmap bitmap = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
canvas.drawPaint(paint);
paint.setColor(Color.GREEN);
paint.setStyle(Style.FILL);
Rect rect = new Rect();
paint.getTextBounds("Test", 0, 4, rect);
float width = 1.0f;
while (width<200 && rect.height()<200)
{
size++;
paint.setTextSize(size);
width = paint.measureText("Test");
paint.getTextBounds("Test", 0, 4, rect);
}
size--;
paint.setTextSize(size);
canvas.drawText("Test", 100-width/2, 100+rect.height()/2, paint);
我试图附加屏幕截图,但它不允许我添加,因为我是新用户。(菜鸟:P)
谢谢,
答案 1 :(得分:0)
无法在小部件中的textview上使用自定义字体
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/Verdana.ttf");
tv.setTypeface(face);
如果你想在画布中使用相同的颜色,那么将面部设置为绘制使用的obj。
如何让我的文字在中心垂直和水平设置?
在画布中作为绘图文本的绘画对象。然后你可以设置paint obj
mPaint.setTextAlign(Align.CENTER);
或者您可以向左或向右放置。您不能垂直或水平设置,因为您绘制文本,以便您可以垂直或水平绘制。
示例您需要绘制文本SAM
水平表示canvas.drawText(“SAM”,50,50,paint);
真实地意味着
canvas.drawText("S", 50, 50, paint);
canvas.drawText("A", 50, 51, paint);
canvas.drawText("M", 50, 52, paint);
注意:那你可能会认为mPaint.setTextAlign(Align.CENTER)是左边还是左边。例如,如果您已经完成100并且从20px开始写入50px意味着它会尝试保持在20到50像素的中心。不在中心以获得100px。
如何让我的文字填满整个位图空间?
你在这里找不到任何包装内容,因为在Canvas中我们必须自己。
所以首先要检查你有多少空间并填充给定的x和y值,并且还要预先改变文本大小。
答案 2 :(得分:0)
你好为什么你不能在TextView上使用自定义字体:我认为你可以只是将TextView子类化并添加三个默认的文本视图构造函数
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/ds_digib.ttf");
setTypeface(tf);
}
使文字垂直和水平设置
请参阅此link
希望这可以帮助您解决问题