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

Java Android文本,文本顶部/底部带有可扩展图像,java,android,xml,Java,Android,Xml,我正在开发一个简单的虔诚的应用程序,它有一个卡纳达(印度的一种语言)句子要显示。我成功地使用了字体并显示了内容 在一些地方,我有一个单词,上面/下面有一行,如下所示。我尝试了一个可扩展的图像,但我仍然无法正确地实现它 这是我所指的代码示例。在这里,我使用一个小图标在字符串之间显示它 Spannable span1 = new SpannableString("The imageplace"); Drawable android = TestImageActivity.this.getResou

我正在开发一个简单的虔诚的应用程序,它有一个卡纳达(印度的一种语言)句子要显示。我成功地使用了字体并显示了内容

在一些地方,我有一个单词,上面/下面有一行,如下所示。我尝试了一个可扩展的图像,但我仍然无法正确地实现它

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

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
希望span本身将执行所有渲染

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

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

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

绘制
覆盖中,使用
绘制
来渲染范围内未渲染的文本。绘制和字体度量应该已经具有适当的值,以便文本渲染看起来像周围的文本。当然,还将渲染所需的线条图形

有关一些示例代码,请参阅。这就是我刚才讨论的所有内容


如果你想让我为此编写一些代码,你需要提供一些代码,让我从一些实际的卡纳达文字开始,以及这些行是什么和它们去了哪里。我甚至不知道Kannada文本是LTR还是RTL;这可能会影响span子类的编码方式。文本最好与您发布的图像相对应,这样我就可以看到它在工作时的外观。

ImageSpan
扩展了
ReplacementSpan
,因此您跨越的任何字符都不会被渲染,因为
TextLayout
希望span本身将完成所有渲染

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

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

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

绘制
覆盖中,使用
绘制
来渲染范围内未渲染的文本。绘制和字体度量应该已经具有适当的值,以便文本渲染看起来像周围的文本。当然,还将渲染所需的线条图形

有关一些示例代码,请参阅。这就是我刚才讨论的所有内容


如果你想让我为此编写一些代码,你需要提供一些代码,让我从一些实际的卡纳达文字开始,以及这些行是什么和它们去了哪里。我甚至不知道Kannada文本是LTR还是RTL;这可能会影响span子类的编码方式。最好文本与您发布的图像相对应,这样我可以看到它在工作时的外观。

我无法获得任何关于如何实现这一点的解决方案,如果任何人对此有任何想法,请让他们帮助我需要一个问题结束的原因。添加代码是一个很大的帮助。你能进一步解释一下问题是什么吗?似乎您正在尝试使某些文本看起来像图像。您包含的代码不完整,无法生成该文本,并且您没有显示代码的结果与您想要实现的结果有何差异。我无法获得关于如何实现此目标的任何解决方案,如果任何人对此有任何想法,请让他们帮助我需要一个解决此问题的原因。添加代码是一个很大的帮助。你能进一步解释一下问题是什么吗?似乎您正在尝试使某些文本看起来像图像。您包含的代码不完整,无法生成该文本,并且您没有显示代码的结果与您想要实现的结果有何不同。