自定义View绘制文字居中显示
2016-09-29 16:54
218 查看
Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);
textPaint.setColor( Color.WHITE);
String text = "你好吗";
// 计算textsize
int width = getMeasuredWidth(); // 获取控件的寬高
int height = getMeasuredHeight();
float textSize = width/6.0f;
// 人为设定size无关紧要,重要部分在下面
textPaint.setTextSize(textSize);
// FontMetrics对象
FontMetrics fontMetrics = textPaint.getFontMetrics(); // 获取这个对象就可以获取到文本的高度了
float textWidthTotal = textPaint.measureText(text); // 计算整体文字的宽度
float textHeight = fontMetrics.descent-fontMetrics.ascent; // 计算文字的高度
// 计算每一个坐标
float baseX = width/2.0f - textWidthTotal/2.0f; // 绘制文字的起始x坐标值
float baseY = (height/2.0f - textHeight/2.0f) + Math.abs(fontMetrics.ascent); //绘制文字的基准线baseLine
float topY = baseY + fontMetrics.top;
float ascentY = baseY + fontMetrics.ascent;
float descentY = baseY + fontMetrics.descent;
float bottomY = baseY + fontMetrics.bottom;
// 绘制文本 ,其中所有坐标均是相对本控件自己的坐标
canvas.drawText( text, baseX, baseY, textPaint); // 第二个参数:从左向右的起始点,第三个参数:文字的baseLine所在的Y轴坐标
重点:android坐标轴的建立是从左向右,从上向下。对于文字的基准线等名词不懂的可以百度搜索FontMetrics。
本文重点在于讲解垂直方向的文字居中,因为这往往就是难点。
textPaint.setColor( Color.WHITE);
String text = "你好吗";
// 计算textsize
int width = getMeasuredWidth(); // 获取控件的寬高
int height = getMeasuredHeight();
float textSize = width/6.0f;
// 人为设定size无关紧要,重要部分在下面
textPaint.setTextSize(textSize);
// FontMetrics对象
FontMetrics fontMetrics = textPaint.getFontMetrics(); // 获取这个对象就可以获取到文本的高度了
float textWidthTotal = textPaint.measureText(text); // 计算整体文字的宽度
float textHeight = fontMetrics.descent-fontMetrics.ascent; // 计算文字的高度
// 计算每一个坐标
float baseX = width/2.0f - textWidthTotal/2.0f; // 绘制文字的起始x坐标值
float baseY = (height/2.0f - textHeight/2.0f) + Math.abs(fontMetrics.ascent); //绘制文字的基准线baseLine
float topY = baseY + fontMetrics.top;
float ascentY = baseY + fontMetrics.ascent;
float descentY = baseY + fontMetrics.descent;
float bottomY = baseY + fontMetrics.bottom;
// 绘制文本 ,其中所有坐标均是相对本控件自己的坐标
canvas.drawText( text, baseX, baseY, textPaint); // 第二个参数:从左向右的起始点,第三个参数:文字的baseLine所在的Y轴坐标
重点:android坐标轴的建立是从左向右,从上向下。对于文字的基准线等名词不懂的可以百度搜索FontMetrics。
本文重点在于讲解垂直方向的文字居中,因为这往往就是难点。
相关文章推荐
- Android自定义TextView实现文字图片居中显示
- Android自定义TextView实现文字图片居中显示的方法
- 如何让TextView中的文字居中显示
- 使用canvas与Paint在View中居中绘制文字
- Android自定义View之绘制闪动的文字
- Android UI 之居中绘制文本内容的正确方法——实现自定义一个TextView
- 让TextView中的图片和文字一起水平居中显示
- Qt自定义委托在QTableView中绘制控件、图片、文字
- 自定义view文字垂直居中
- Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)
- 如何设置一个textview的文字显示为垂直居中,水平居左呢
- 自定义TextView解决超长文字显示的问题
- iOS 之textview 的问题汇总(显示边框的问题,文字居中,placeHolder)
- Android UI 如何让TextView中的文字居中显示
- 自定义绘制android EditText的背景,定义EditText文字的显示样式
- Android自定义可以在文字上方显示备注的View
- qt利用委托:QStyledItemDelegate,实现tableview 的表格项的自定义显示,如插入图片,绘制控件
- Android UI 之居中绘制文本内容的正确方法——实现自定义一个TextView
- 使用canvas与Paint在View中居中绘制文字
- Qt自定义委托在QTableView中绘制控件、图片、文字