繁体   English   中英

Android Text,文本顶部/底部带有可扩展图像

[英]Android Text with Spannable image on top/bottom of text

我正在开发一个简单的灵修应用程序,该应用程序具有要显示的卡纳达语(印度语)。 我成功使用了字体并显示了内容。

在几个地方,我有一个单词,单词的顶部/底部都有一条线,如下所示。 我尝试使用可扩展的图像,但是仍然无法正确实现它。

这是我所引用的代码示例。 在这里,我使用一个小图标在字符串之间显示它。

Spannable span1 = new SpannableString("The  imageplace");
Drawable android = TestImageActivity.this.getResources().getDrawable(R.drawable.end);
android.setBounds(5, 0, 20, 5);
ImageSpan image = new ImageSpan(android, ImageSpan.ALIGN_BASELINE);
span1.setSpan(image, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tvTextImage3.setText(span1);

文字上方和下方的细线

ImageSpan扩展了ReplacementSpan因此您要跨接的任何字符都不会被渲染,因为TextLayout期望跨度本身将完成所有渲染。

我建议您实现自己的ReplacementSpan子类。 因为看起来您的图形与一个字符相关联,所以您应该包装单个字符。

getSize覆盖中,您将使用startend来索引text并获取要跨越的字符,然后使用paint.getTextBounds()来测量文本的宽度并返回该值。 您希望宽度计算以某种方式起作用,即跨度的宽度不影响文本的默认间距。

此方法可能需要做的另一件事是通过增加上升和下降来更改FontMetrics ,以便给您一些空间来绘制线条。

draw替代中,您可以使用paint来呈现未在跨度内呈现的文本。 绘画和字体指标应该已经具有适当的值,以便您的文本呈现看起来像周围的文本。 当然,您还将渲染所需的线图形。

对于一些示例代码,请看一下我对类似问题的回答 这包含了我刚才讨论的所有内容。

如果要我为此编写一些代码,则需要提供一些代码,让我从实际的卡纳达语文本以及行的含义和行进位置着手。 我什至不知道卡纳达语文字是LTR还是RTL。 这可能会影响span子类的编码方式。 文字最好与您发布的图像相对应,以便我可以看到其工作时的外观。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM