canvas.drawText把文字画到view的最中间

画不多说先来个效果图

红色圆形就是一个自定义的view  中间的文字也是上下居中的效果

		//获取paint中的字体信息  settextSize要在他前面
		FontMetrics fontMetrics = paint.getFontMetrics();
		// 计算文字高度
		float fontHeight = fontMetrics.bottom - fontMetrics.top;
		// 计算文字高度baseline
		float textBaseY = getHeight() - (getHeight() - fontHeight) / 2
				- fontMetrics.bottom;
		
		String string = "开始秒赞";
		//获取字体的长度
		float fontWidth = paint.measureText(string);
		//计算文字长度的baseline
		float textBaseX = (width - fontWidth) / 2;
		canvas.drawText(string, textBaseX, textBaseY, paint);

妥了!

时间: 2024-11-13 09:16:21

canvas.drawText把文字画到view的最中间的相关文章

android学习16#--学习canvas.drawText

本来这篇文章是要写写我在设计高级跑马灯程序的心得的,但是编写过程中花了近一天多的时间搞明白canvas.drawText中的第三个参数[float y]代表的真实含义.学习本文应该能帮助大家掌握FontMetrics类和Rect类成员变量值具体含义. drawText引出问题 先来看看api中是如何定义drawText的参数. /** * Draw the text, with origin at (x,y), using the specified paint. The * origin is

关于Canvas.drawText中xy位置问题

问:canvas.drawText("3", x, y, paint);  x和y是指画得时候数字3中心的坐标吗?还是左上角的坐标?答:x默认是'3'这个字符的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上的位置.public void drawText (String text, float x, float y, Paint paint)Since: API Lev

Android Canvas drawText实现中文垂直居中

public void onDraw (Canvas canvas) { Rect targetRect = new Rect(50, 50, 1000, 200); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStrokeWidth(3); paint.setTextSize(80); String testString = "Text:中文asdfghjkl"; paint.setColor(Color.CYAN

android canvas drawText()文字居中

近期也是在学习自己定义控件,曾经仅仅自己随便玩了下,一直认为比較难,正好如今工作轻松,每天闲着就看看书看看帖子学习自己定义控件,你还别说自己定义控件学起来还是蛮有趣的!! 这里也跟大家分享下我关于drawText()文字居中的方法. 先附上drawText()的方法说明 说实话当时看了这个,我也没明确这个x,y坐标究竟表达的啥意思,还一直以为是绘制文字中心的坐标,后来发现这个理解是错误的 要想理解这个首先看张图 像图上这样安卓的文字绘制是相对于基线绘制的,也就是图中的红线,而top+bottom

canvas drawText 如何居中显示。

网上很多关于将text居中到某个矩形或者bitmap中的例子,但是我觉得很多是错的,特别是一些人希望通过观察然后设置某个偏移量让它尽可能居中,我觉得这是再误人子弟.android连text居中都做不到的话,那它就改退出这个市场了. 废话不多说本人是从一篇文章中得到的启示,作为尊重他人我附上这篇文章,供大家参考.http://www.doc88.com/p-3953907358643.html 当然这篇文章讲的不是很详细,特别是对baseline这个值的求法是对的但是表达形式上我觉得不是很满意,所

Canvas drawText实现中英文居中

@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); // Measure a text Rect textBounds = new Rect(); mTextPaint.getTextBounds(String.valueOf(mLetter), 0, 1, textBounds); float tex

关于Android Canvas.drawText方法中的坐标参数的正确解释

canvas.drawText("www.jcodecraeer.com", x, y, paint);  x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标,但是安卓的处理有点另类,我都怀疑安卓的设计者是不是脑壳有问题了.x默认是‘www.jcodecraeer.com’这个字符串的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上

android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)

在使用canvas.drawText()绘制文字的时候,发现,如果需要绘制的文字较长,需要换行,通过在文字中加上“\n"或者”\r\n"都无法实现换行,如果非要使用canvas.drawText()方法来绘制,则必须自己手动的将文字给断开,这样很不方便,如果需要改变文字大小的时候,则还需要重新改写断开的方法,或者直接写个可以根据文字大小进行自动断开字符串的方法,但是,都是很繁琐的办法,其实,android中是有提供实现绘制字符串换行的方式的,如下: TextPaint textPain

Android Canvas.drawText方法中的坐标参数的正确解释

摘要 canvas.drawText(www.jcodecraeer.com, x, y, paint); x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标,但是安卓的处理有点另类,我都怀疑安卓的设计者是不是脑壳有问题了. x默认是‘www.jcodecraeer.com’这 canvas.drawText("www.jcodecraeer.com", x, y, paint);  x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题