我需要在我的文本视图中放置一些图标,但是它们不适合线条高度(看看箭头):
我试过这个:
spannable.setSpan(new ImageSpan(context, entry.getValue(), ImageSpan.ALIGN_BOTTOM), Matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);
还有这个:
Drawable myIcon = c.getResources().getDrawable(R.drawable.myicon);
myIcon.setBounds(0, 0, myIcon.getIntrinsicWidth(), myIcon.getIntrinsicHeight());
spannable.setSpan(new ImageSpan(myIcon, ImageSpan.ALIGN_BASELINE), matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);
在这两种情况下,我得到了相同的结果。
我将图标保存在/res/drawable文件夹中,它的大小是75x75px。我试着降低图像分辨率,但它们看起来很模糊。
发布于 2014-03-06 21:47:18
您需要将图像的边界设置为TextView的行高。例如:
myIcon.setBounds(0, 0, t.getLineHeight(),t.getLineHeight());
当然,这假设您想要一个正方形的图像。如果不是正方形,则需要手动确定宽度值应基于线条高度。
发布于 2016-04-29 18:16:43
要实现包含到文本视图中的绘制内容的正确高度,您应该设置它们的适当边界。但首先,我们必须正确地计算它们。尤其是它的高度。
经过一些实验,我意识到Paint
类中的FontMetricsInt
字段可能会很有用。
Paint textPaint = new Paint();
//obviously, we have to set textSize into Paint object
textPaint.setTextSize(textSize);
FontMetricsInt fontMetrics = textPaint.getFontMetricsInt();
setBounds(
0,
fontMetrics.ascent,
widthForDrawable,
fontMetrics.bottom
);
因此,使用FontMetricsInt
的ascent
值和底部的bottom
值对齐图像的顶部。
https://stackoverflow.com/questions/19567220
复制相似问题