Ram*_*ain 8 android ebook-reader textview spannablestring
我有一个应用程序,我在TextView. 我正在SpannableStringBuilder为此目的使用。
我想在这里做的一件事是能够突出显示文本。现在我尝试使用BackgroundColorSpan,但在这种情况下,文本上的背景覆盖了完整的行高。我希望它只覆盖文本。似乎没有明显的方法可以在此跨度上设置垂直填充或高度。只是颜色。
其次,我还尝试通过在该类的draw方法中绘制来子类化ReplacementSpan并实现backgroundSpan我自己的a 。但这似乎不支持多行突出显示。
谁能告诉我如何实现这种突出显示功能?基本上,我希望它像一个电子书阅读器的工作,最好的Kindle或默认的电子书阅读器Android。
小智 1
您可以实现 LineBackgroundSpan 并覆盖:
drawBackground (Canvas c, Paint p, int left, int right, int top, int Baseline, int Bottom, CharSequence text, int start, int end, int lnum)
您可以修改“顶部”和“底部”参数来指定为给定线条绘制的背景的高度。“基线”参数是所有字符所在行的 y 坐标(请注意,字母 g、p、j 等的某些部分低于基线)。
此方法适用于显示屏上给定文本的每一行。例如,如果文本
"this is an example , blah, blah .."
Run Code Online (Sandbox Code Playgroud)
跨越显示器上的 3 行,然后应用drawBackground(...) 三次,如果您只想更改跨度中某些行的高度,则可以使用“lnum”参数来更改某些行的行为。
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |