【发布时间】:2014-09-19 02:53:46
【问题描述】:
我有一个标签云,其中的标签有背景颜色。不幸的是,我无法确定行距。
假设这是文本云:
tag1 tag2 tag3
tagtext4 tagtext5
这是文本视图的样式:
<style name="DataEntryValue" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/gray_value</item>
<item name="android:fontFamily">sans-serif-condensed</item>
</style>
BackgroundColorSpan 用于为标签设置蓝色背景颜色。但是,线条之间没有空格,即两条线的背景颜色没有分开。
当我为文本视图设置行距时,例如到 12sp,它添加了行间距,但使用标签的背景颜色而不是 textview 背景颜色来建立行间距。
知道如何使用文本视图背景颜色获取行距吗?
更新
使用solution 作为指导,我想出了这种方法:为文本绘制背景,为文本绘制背景,在顶部和底部使用填充,绘制文本。由于我以前没有使用过画布,因此可能有更好的方法。无论如何 - 这是代码。
public void draw(Canvas canvas, CharSequence text, int start, int end, float x,
int top, int y, int bottom, Paint paint)
{
float padding;
float right
RectF rect;
right = x + measureText(paint, text, start, end);
padding = 4f;
rect = new RectF( x, top, right, bottom );
paint.setColor( mContext.getResources().getColor(R.color.color1) );
rect = new RectF( x, top + padding, right, bottom - padding);
paint.setColor( mContext.getResources().getColor(R.color.bg_color_tag_item) );
canvas.drawRect(rect, paint);
paint.setColor( mContext.getResources().getColor(R.color.data_entry_value) );
canvas.drawText(text, start, end, x, y, paint);
}
现在看起来像这样:
很高兴知道:有更好的解决方案吗?
【问题讨论】:
-
请您详细说明您是如何解决问题的。更多代码或其他东西。这对我很有用。
-
解决方案的实际代码在上面公布。
-
@user3460486 能否请您发布 measureText() 方法
-
private float measureText(Paint paint, CharSequence text, int start, int end) { return paint.measureText(text, start, end); }
标签: android android-canvas string-formatting spacing spannablestring