當我有一個擴展的類查看如何繪製文本到該視圖的中心?要繪製文本我正在使用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. Android文本居中
- 6. Android:如何在視圖中使用居中的背景圖像
- 7. 如何在面板中居中視圖
- 8. 如何在視圖中居中NSTextField
- 9. 如何在android中獲取居中視圖的左邊距?
- 10. 如何在HorizontalScroll視圖中居中ImageView Android
- 11. 如何在Android佈局中居中幾個視圖?
- 12. 如何在文本視圖中顯示鍵入的文本Android
- 13. 在android中的imageview下居中文本
- 14. Android:文本不在textView中居中?
- 15. 的Android在列表中居中文本
- 16. 如何在Android中的標籤欄中居中對齊文本
- 17. 在視圖中居中CGRect
- 18. Android Java文本不居中
- 19. 如何在FPDF中居中文本?
- 20. 如何在tabhost中居中文本?
- 21. 如何在UITableView.tableHeaderView中居中文本?
- 22. 如何在QTextTable中居中文本
- 23. 如何在Swift中居中文本?
- 24. 如何在fpdf中居中文本?
- 25. 如何在Emacs中居中文本?
- 26. 如何在CSS中居中文本?
- 27. 如何在列表中居中文本?
- 28. 如何在Swift中居中UITextField文本
- 29. Android中的水平居中視圖GridLayout
- 30. 如何居中文本?
但是,不會只是從文本開始位置居中不是整個文本? – user1762507 2013-03-21 00:49:26
我編輯了我的答案。凌晨2點在這裏,對不起 – Droidman 2013-03-21 00:51:06