在绘制文字时,如果绘制内容的实际长度大于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开发中,文本绘制和自动换行是一个常见的需求,特别是在自定义视图或者复杂的UI设计中。`StaticLayout`是Android系统提供的一个类,它主要用于帮助开发者在Canvas上高效地绘制多行文本并实现自动换行。这篇...
本文将详细讲解如何解决TextView的自动换行问题,并结合提供的`CustomTextView.java`源码和`textattr.xml`资源文件来深入理解这一技术。 首先,了解TextView的基本属性。TextView默认会根据其宽度自动进行换行,以...
本文将详细介绍如何使用JavaScript编写一个函数,实现在Canvas上绘制文本内容时自动换行。 首先,我们需要理解Canvas API中的`fillText()`方法,它是用来在Canvas上填充文本的。但这个方法不支持文本换行,所以我们...
它不仅可以显示单行文本,还能处理复杂的文字排版,包括自动换行。本文将深入探讨`TextView`在处理文字排版和换行方面的知识,以及如何优化其性能。 ### 一、TextView的基础用法 1. **XML布局中声明TextView** 在...
`TextView`内部就是用`Layout`类来绘制文本的,我们可以通过继承`Layout`并重写相关方法来自定义换行规则。 在`MyTextView2`这个文件中,可能是作者提供了一个自定义的`TextView`类,扩展了标准的`TextView`功能,...
标题和描述提到的问题,即如何实现“自定义TextView显示文字对齐到最右侧才换行”,是一个典型的布局定制问题。为了解决这个问题,我们需要创建一个自定义的TextView,并覆盖其默认的换行行为。 首先,创建一个新的...
StaticLayout是android中处理文字换行的一个工具类,StaticLayout已经实现了文本绘制换行处理,下面这篇文章主要介绍了Android中用StaticLayout实现文本绘制自动换行的相关资料,需要的朋友可以参考。
Android 自动翻页-文字自动换行的例子,测试自动换行,设置文字自动换行,得到字符串的信息,通过绘制TextUtil:实现自动换行,包括:行数、页数等信息,内部调用,本源码演示了文字自动换行的同时,还告诉初学者,...
在Android应用开发中,添加文字水印是一项常见的需求,特别是在处理图像时,为了保护版权或者增加标识信息。本文将深入探讨如何在Android中实现自定义的文字水印功能,支持配置文字大小、倾斜角度以及多行水印。我们...
MTextView是一个针对Android平台的自定义TextView,其主要目标是解决标准TextView在处理文本时可能出现的提前换行问题,并且提供了图文混排的功能。这个库是用Java语言编写的,使得开发者能够更加灵活地控制文字和...
使用Canvas对象,我们可以调用`drawBitmap()`来绘制图片,`drawText()`来绘制文字。同时,我们还需要考虑到文字的对齐方式、字体大小、颜色等因素,可能需要创建一个Paint对象来设置这些属性。 对于自动换行,可以...
在Android开发中,文本视图(TextView)是用于展示...同时,这种技术也可以应用于其他场景,如阅读应用的字幕滚动效果、游戏内的文字叙述等。通过深入学习和实践,你将能够更自如地控制Android应用中的文本显示效果。
在Android中,我们可以使用`TextView`或自定义视图来创建标签,通过设置背景、文字样式等属性来定制其外观。为了实现选择功能,我们可以添加点击事件监听器,当用户点击标签时,改变其视觉状态以表示被选中。 "动态...
然而,当TextView中包含中文、英文、数字和符号时,可能会出现排版问题,如字符间距离不均、换行混乱等。为了解决这些问题,开发者需要对TextView的属性进行调整或使用特定的解决方案。 首先,我们要理解Android...
总之,Android AutoWrapTextView的实现涉及到自定义视图的绘制、属性解析、文本处理等多个方面,它通过自定义的绘制逻辑解决了中英文排版问题,提供了更加美观和统一的显示效果。这种自定义组件的开发对于优化用户...
在实际开发中,可以根据具体需求调整代码,例如添加换行处理、动态改变文字颜色等。Test_DrawText可能是示例代码或者测试用例,通过查看和运行这个文件,可以更直观地理解这个过程。在实际项目中,结合布局和事件...
分析该项目的源代码,我们可以深入了解其内部实现机制,学习如何处理触摸事件、如何绘制文字、如何调整文字和背景的相对位置等技巧,这对于提高Android UI开发能力大有裨益。 总的来说,`StickTextView`是一个方便...
5. **处理文字换行** 如果文本过长,需要考虑如何在圆形边界上进行换行。可以计算每行能容纳的字符数量,然后动态调整。 6. **动态更新** 对于需要实时更新的`CircleTextView`(如数字时钟),还需要添加监听器,...
`TextViewVertical`是一个针对特定需求的自定义组件,它扩展了Android的`TextView`功能,实现了竖直文字排列和横向滚动,对于开发者来说,研究和掌握此类组件的实现,不仅有助于解决实际问题,也能加深对Android UI...