当我有一个扩展的类查看如何绘制文本到该视图的中心?要绘制文本我正在使用canvas.drawText
,但由于绘制后无法移动文本,所以我不知道如何将文本居中。因此,我将如何在Android视图类如何在android视图类中居中文本?
0
A
回答
1
文本居中在精神,Maver1ck的在正确的轨道上,尽管它在实践中比这更困难一点。你需要建立一个TextPaint
,做一些测量:
TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
paint.setTextAlign(Paint.Align.CENTER); //Draw text from center
//setup any text size or color attributes
现在,以确定如何垂直居中的文本。你想集中在可见的文本?你想要中心的基线?你想要基于文本顶部还是上升中心?文字很复杂。对于简单的情况下,我们只能说,我们将底部与字体的顶部之间的中心(注意,这不是绝对顶部和底部 - 这将是上升和下降):
//Do this somewhere where you can cache it -- no need to do this on every draw.
//onSizeChanged() is a good place.
FontMetrics metrics = paint.getFontMetrics();
float height = Math.abs(metrics.top - metrics.bottom);
float x = getWidth()/2;
float y = (getHeight()/2) + (height/2);
然后,在你的onDraw()
:
canvas.drawText("My Text", x, y, paint);
0
Paint mPaint = new Paint();
mPaint.setARGB(200, 254, 0, 0); //example
mPaint.setTextAlign(Align.CENTER);
int positionX = (canvas.getWidth()/2);
int positionY = (int) ((canvas.getHeight()/2) - ((mPaint.descent() + mPaint.ascent())/2)) ;
canvas.drawText("Hello", positionX, positionY, mPaint);
相关问题
- 1. 如何居中在文本视图中的Android
- 2. 如何在Android的狭窄文本视图中垂直居中文本?
- 3. 如何在Android中的两个图像之间居中文本
- 4. Android:如何在视图中使用居中的背景图像
- 5. 如何在面板中居中视图
- 6. 如何在Android布局中居中几个视图?
- 7. 的Android在列表中居中文本
- 8. Android:文本不在textView中居中?
- 9. 如何在文本视图中显示键入的文本Android
- 10. 如何在Android中的标签栏中居中对齐文本
- 11. 在视图中居中CGRect
- 12. 如何在Emacs中居中文本?
- 13. 如何在CSS中居中文本?
- 14. 如何在FPDF中居中文本?
- 15. 如何在UITableView.tableHeaderView中居中文本?
- 16. 如何在Gtk.Entry中居中文本?
- 17. 如何在tabhost中居中文本?
- 18. 如何在fpdf中居中文本?
- 19. 如何在Swift中居中文本?
- 20. 如何居中文本?
- 21. 如何居中文本
- 22. 如何在Android中的Button上垂直居中drawableTop和文本?
- 23. 在LinearLayout中居中2文本视图,仅在滚动时显示文本
- 24. 如何在android中创建文本视图中心?
- 25. 如何在图像中居中并对齐文本?
- 26. 如何在背景div baloon图像中居中文本?
- 27. 如何在CompoundDrawable中居中文本和图像?
- 28. 如何在RadioButton中居中放置图像和文本?
- 29. C3 - 如何在甜甜圈图表中居中文本?
- 30. 如何在Android的文本视图中对长文本进行文本换行
但是,不会只是从文本开始位置居中不是整个文本? – user1762507 2013-03-21 00:49:26
我编辑了我的答案。凌晨2点在这里,对不起 – Droidman 2013-03-21 00:51:06