当前位置: 代码迷 >> Android >> Android 绘制文字换行有关问题
  详细解决方案

Android 绘制文字换行有关问题

热度:76   发布时间:2016-05-01 12:00:13.0
Android 绘制文字换行问题

在绘制文字时,如果绘制内容的实际长度大于View的宽度,那么字符将在一行绘制,超出部分不显示。由于绘制函数onDraw没有对换行做逻辑处理,所以超出屏幕的部分便不可见了。如果还是想使用Canvas.drawText函数,那么需要对字符串做换行判断,然后分别绘制各行的字符串。看到一个简单的可行性方法,在此贴出代码:

		@Override		protected void onDraw(Canvas canvas) {			super.onDraw(canvas);			TextPaint textPaint = new TextPaint();			textPaint.setARGB(0xFF, 0, 0, 0);			textPaint.setTextSize(14.0F);						String aboutTheGame = "ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD";						StaticLayout layout = new StaticLayout(aboutTheGame, textPaint,					getWindowManager().getDefaultDisplay().getWidth() - 4,					Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);			canvas.translate(2, 0);			layout.draw(canvas);						DynamicLayout dynamicLayout = new DynamicLayout(aboutTheGame,					textPaint,					getWindowManager().getDefaultDisplay().getWidth() - 4,					Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);			canvas.translate(2, 80);			dynamicLayout.draw(canvas);					}

?说明:

  • 此方法可以简单实现换行,但是效果有点瑕疵,尤其中文字符串;
  • 主要是利用StaticLayout或者DynamicLayout的draw方法来完成换行操作;

多说一句:如果想深入一点了解这个问题,还是看源码来的快!:)

?

?

  相关解决方案