`
wangleyiang
  • 浏览: 220129 次
社区版块
存档分类
最新评论

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方法来完成换行操作;

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

 

 

分享到:
评论

相关推荐

    MTextView,解决Android TextView提前换行的问题

    总的来说,MTextView是Android开发中解决TextView提前换行问题的一个有效工具,它通过优化布局算法,使得图文混排的内容能在屏幕上更美观地呈现。对于那些对文本显示有较高要求的应用,自定义如MTextView这样的组件...

    Android使用StaticLayout实现文本绘制自动换行

    在Android开发中,文本绘制和自动换行是一个常见的需求,特别是在自定义视图或者复杂的UI设计中。`StaticLayout`是Android系统提供的一个类,它主要用于帮助开发者在Canvas上高效地绘制多行文本并实现自动换行。这篇...

    Android开发TextView排版问题取消自动换行

    本文将详细讲解如何解决TextView的自动换行问题,并结合提供的`CustomTextView.java`源码和`textattr.xml`资源文件来深入理解这一技术。 首先,了解TextView的基本属性。TextView默认会根据其宽度自动进行换行,以...

    canvas绘制文本内容自动换行的实现代码

    本文将详细介绍如何使用JavaScript编写一个函数,实现在Canvas上绘制文本内容时自动换行。 首先,我们需要理解Canvas API中的`fillText()`方法,它是用来在Canvas上填充文本的。但这个方法不支持文本换行,所以我们...

    android textview 文字排版 换行

    它不仅可以显示单行文本,还能处理复杂的文字排版,包括自动换行。本文将深入探讨`TextView`在处理文字排版和换行方面的知识,以及如何优化其性能。 ### 一、TextView的基础用法 1. **XML布局中声明TextView** 在...

    Android-TextView换行排版混乱-允许设置SpannableString

    `TextView`内部就是用`Layout`类来绘制文本的,我们可以通过继承`Layout`并重写相关方法来自定义换行规则。 在`MyTextView2`这个文件中,可能是作者提供了一个自定义的`TextView`类,扩展了标准的`TextView`功能,...

    自定义textview显示文字对齐到最右侧才换行

    标题和描述提到的问题,即如何实现“自定义TextView显示文字对齐到最右侧才换行”,是一个典型的布局定制问题。为了解决这个问题,我们需要创建一个自定义的TextView,并覆盖其默认的换行行为。 首先,创建一个新的...

    Android中用StaticLayout实现文本绘制自动换行详解

    StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面这篇文章主要介绍了Android中用StaticLayout实现文本绘制自动换行的相关资料,需要的朋友可以参考。

    Android 自动翻页-文字自动换行的例子.rar

    Android 自动翻页-文字自动换行的例子,测试自动换行,设置文字自动换行,得到字符串的信息,通过绘制TextUtil:实现自动换行,包括:行数、页数等信息,内部调用,本源码演示了文字自动换行的同时,还告诉初学者,...

    Android-andriod加文字水印支持配置文字大小倾斜角度多行水印

    在Android应用开发中,添加文字水印是一项常见的需求,特别是在处理图像时,为了保护版权或者增加标识信息。本文将深入探讨如何在Android中实现自定义的文字水印功能,支持配置文字大小、倾斜角度以及多行水印。我们...

    MTextView:Android 自绘TextView解决提前换行问题,支持图文混排

    MTextView是一个针对Android平台的自定义TextView,其主要目标是解决标准TextView在处理文本时可能出现的提前换行问题,并且提供了图文混排的功能。这个库是用Java语言编写的,使得开发者能够更加灵活地控制文字和...

    图片+文本自动换行

    使用Canvas对象,我们可以调用`drawBitmap()`来绘制图片,`drawText()`来绘制文字。同时,我们还需要考虑到文字的对齐方式、字体大小、颜色等因素,可能需要创建一个Paint对象来设置这些属性。 对于自动换行,可以...

    android 逐行显示自动换行的textview

    在Android开发中,文本视图(TextView)是用于展示...同时,这种技术也可以应用于其他场景,如阅读应用的字幕滚动效果、游戏内的文字叙述等。通过深入学习和实践,你将能够更自如地控制Android应用中的文本显示效果。

    android商品属性选择标签控件,可实现自动换行

    在Android中,我们可以使用`TextView`或自定义视图来创建标签,通过设置背景、文字样式等属性来定制其外观。为了实现选择功能,我们可以添加点击事件监听器,当用户点击标签时,改变其视觉状态以表示被选中。 "动态...

    解决 TextView 中文、英文、数字、符号 排版问题

    然而,当TextView中包含中文、英文、数字和符号时,可能会出现排版问题,如字符间距离不均、换行混乱等。为了解决这些问题,开发者需要对TextView的属性进行调整或使用特定的解决方案。 首先,我们要理解Android...

    Android AutoWrapTextView中英文排版问题的解决方法

    总之,Android AutoWrapTextView的实现涉及到自定义视图的绘制、属性解析、文本处理等多个方面,它通过自定义的绘制逻辑解决了中英文排版问题,提供了更加美观和统一的显示效果。这种自定义组件的开发对于优化用户...

    android利用Paint在Canvas上实现竖排写字

    在实际开发中,可以根据具体需求调整代码,例如添加换行处理、动态改变文字颜色等。Test_DrawText可能是示例代码或者测试用例,通过查看和运行这个文件,可以更直观地理解这个过程。在实际项目中,结合布局和事件...

    Android-StickTextViewAndroid图片文字贴纸功能

    分析该项目的源代码,我们可以深入了解其内部实现机制,学习如何处理触摸事件、如何绘制文字、如何调整文字和背景的相对位置等技巧,这对于提高Android UI开发能力大有裨益。 总的来说,`StickTextView`是一个方便...

    Android-CircleTextView(圆形文字View)

    5. **处理文字换行** 如果文本过长,需要考虑如何在圆形边界上进行换行。可以计算每行能容纳的字符数量,然后动态调整。 6. **动态更新** 对于需要实时更新的`CircleTextView`(如数字时钟),还需要添加监听器,...

    Android文字竖直排版TextViewVertical(可横向滚动)(转)

    `TextViewVertical`是一个针对特定需求的自定义组件,它扩展了Android的`TextView`功能,实现了竖直文字排列和横向滚动,对于开发者来说,研究和掌握此类组件的实现,不仅有助于解决实际问题,也能加深对Android UI...

Global site tag (gtag.js) - Google Analytics