没有部分绘制线条的 TextView

Posted

技术标签:

【中文标题】没有部分绘制线条的 TextView【英文标题】:TextView without partially drawn lines 【发布时间】:2011-06-19 18:07:55 【问题描述】:

是否有可能在android中创建一个可以滚动多行文本的TextView,但除非它可以完全绘制在它的高度,否则不会绘制第一行或最后一行文本?我意识到滚动时它可能看起来很奇怪,但我不想看到字符的顶部或底部被截断。

建议的解决方案可能涉及修改 android 平台。

【问题讨论】:

你想让 textView 逐行滚动,不流畅...? 是的,逐行或逐页,但没有平滑滚动。 【参考方案1】:

我不知道你说的修改android平台是什么意思,但是如果你想要一个全新的行为,对你自己的TextView进行编码(或扩展android TextView以改变滚动)没有任何限制。

如果您真的想这样做,您可以更改 Touch/Scrolll 行为以直接滚动到下一个/上一个可见行尝试更改 TextView Scoller(setScoller( ) 方法)。如果这不起作用,您将不得不自己编写代码(基本上通过textview.getLayout().getLineTop(line number) 获取行位置并将屏幕顶部定位到该点)。

您的唯一限制是当您需要更改嵌入“内核”中的某些内容时(例如,来自 MediaPlayer 的媒体协议)。

查看marquee example

【讨论】:

【参考方案2】:

看看您是否可以将此类http://developer.android.com/reference/android/text/method/ScrollingMovementMethod.html 与滚动条一起使用。您的 textView 高度需要是文本行高度的倍数。

【讨论】:

【参考方案3】:

太棒了,我建议你使用WheelView by Yuri

如果您选择了背景、高度和宽度的良好组合;你会得到你想要的效果。

【讨论】:

【参考方案4】:

Android Terminal Emulator 项目包含一个带有 EmulatorView 类的库,该类的行为几乎符合我的要求,并且是开源的:https://github.com/jackpal/Android-Terminal-Emulator

虽然它包含大量用于终端内容的额外代码,但如有必要,可能会被删除。但是我必须假设它只支持等宽字体,这使得它不太有用。

【讨论】:

以上是关于没有部分绘制线条的 TextView的主要内容,如果未能解决你的问题,请参考以下文章

Java jFrame画布绘制点而不是线条

绘制曲线没有滞后?

绘制画布后淡出线条?

用Bresenham线算法绘制线条

iOS 动画绘制线条颜色渐变的折线图

自动绘制不同颜色的线条