在我的Android项目中,我有一个显示长文本的TextView.我想在行之间给出一些空格,就像我们在CSS中使用line-height属性一样.我们应该怎么做?
我正在尝试通过使用Spannable String来更改我的字符串以使用中间的数字制作徽章.我可以通过设置BackGroundColorSpan突出显示相应的字母/数字,但需要帮助使它更漂亮.我希望有圆角,整个形状周围有一点填充.
这篇文章非常接近我正在尝试做的事情:Android SpannableString在文本部分后面设置背景
由于它与我的应用程序交互的方式,我真的需要将资源保留为TextView.
任何想法如何利用ReplacementSpan为我的特殊情况?
这是我的代码片段:
            if (menuItem.getMenuItemType() == SlidingMenuItem.MenuItemType.NOTIFICATIONS) {
                myMenuRow.setTypeface(null, Typeface.NORMAL);
                myMenuRow.setTextColor(getContext().getResources().getColor(R.color.BLACK));
                myMenuRow.setActivated(false);
                SpannableString spannablecontent = new SpannableString(myMenuRow.getText());
                spannablecontent.setSpan(new BackgroundColorSpan(Color.argb(150,0,0,0)), 18, myMenuRow.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                myMenuRow.setText(spannablecontent);
我想显示如下文字......

我的编码如下:
SpannableString sText = new SpannableString(text);
sText.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, sText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.txtText.setLineSpacing(0, 1.5f);
textView.setText(sText);
我有一个标签云,其中标签有背景颜色.不幸的是,我无法获得行间距.
我们假设这是文本云:
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背景颜色来建立行间距.
知道如何使用文本视图背景颜色获得行间距?
更新
使用此解决方案作为指导我想出了这种方法:绘制文本的背景,在顶部和底部用填充绘制文本的背景,绘制文本.因为我之前没有使用过画布,所以可能有更好的方法.无论如何 - 这是代码.
    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, …android string-formatting spacing android-canvas spannablestring
我只使用一个文本视图并使用spanable为字符串添加字体和颜色.但我有问题,使用spanable显示圆形背景到字符串.那么如何使用spannable String概念实现这一目标,图像如下所示.

有很多方法可以为TextView中显示的部分文本设置样式,例如设置其前景色(此处)和其他(此处).
我无法确定是否有办法在TextView 的部分文本上设置矩形虚线/虚线轮廓.像这样的东西:
我试图寻找这样的解决方案,并且我也尝试阅读CharacterStyle的文档.尽管如此,我认为任何可用的跨度都不适合这种风格.
是否有内置的解决方案,或者我是否需要使用自定义的实现?
我使用了下面建议的修改版本,它在POC上运行良好,但出于某种原因,在实际项目中,文本两侧的垂直虚线是粗体:
这是当前的代码:
要使用的字符串
<string name="text_to_format">test   %1$s test</string>
使用代码
        final String textToDash="DASHED";
        String formattedStr = getString(R.string.text_to_format, textToDash+ "<bc/>");
        Spanned textToShow = Html.fromHtml(formattedStr, null, new TagHandler() {
            int start;
            @Override
            public void handleTag(final boolean opening, final String tag, Editable output, final XMLReader xmlReader) {
                switch (tag) {
                    case "bc":
                        if (!opening)
                            start = output.length() - textToDash.length();
                        break;
                    case "html":
                        if (!opening)
                            output.setSpan(
                                    new …