【问题标题】:How to use Span to make part of TextView Bold untill special character?如何使用 Span 使 TextView Bold 的一部分直到特殊字符?
【发布时间】:2020-10-20 07:56:22
【问题描述】:

我想使用 Span 使 textview 的一部分变为粗体,直到特殊字符像逗号一样到达。 例如;

我叫,约翰

你好,你好吗

如果多个逗号到达一个文本视图,那么它应该只使用第一个忽略休息

【问题讨论】:

  • 你有特殊字符列表吗?或者条件的字母和数字以外的任何字符?
  • 我有一个逗号。

标签: android android-layout


【解决方案1】:

以编程方式如下:

Java

void format(final TextView view) {

    final CharSequence text = view.getText();

    if (!TextUtils.isEmpty(text)) {
        final int index = text.toString().indexOf(',');

        if (index > 0) {
            final SpannableStringBuilder sb = new SpannableStringBuilder(text);
            sb.setSpan(new StyleSpan(Typeface.BOLD), 0, index, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
            view.setText(new SpannableString(sb));
        }
    }
}

科特林

fun format(view: TextView) {

    val text = view.text

    if (!TextUtils.isEmpty(text)) {
        val index = text.indexOf(',')

        if (index > 0) {
            val sb = SpannableStringBuilder(text)
            sb.setSpan(StyleSpan(Typeface.BOLD), 0, index, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
            view.text = SpannableString(sb)
        }
    }
}

另一方面,如果资源字符串设置为永不更改,那么您可以使用 将粗体标签直接设置到您的字符串资源 xml 文件中:: p>

<string name="string_name"><b>Hello</b>, World</string>

【讨论】:

  • 如果文本包含多个逗号会怎样
  • 在代码中你可以看到它使用 'indexOf' 来查找第一个逗号,这意味着它将从索引 0 到第一个找到的逗号的索引变为粗体,之后将忽略其余部分指数。所以,从开始到第一个逗号都会是粗体,而忽略其余的。如果文本中没有逗号,则根本不会加粗。
  • 谢谢你的回答,让我告诉你..我是怎么做的......检查我的答案
  • 请检查我的答案,但我会尝试你的那个,,,它最简单的一个
【解决方案2】:
var text:String? = property.name
    val spannable = SpannableString(text)
    val matcher: Matcher = Pattern.compile(",\\s*(\\w+)").matcher(text)
    while (matcher.find()){
        val city = matcher.group(1)
        val cityIndex: Int = text!!.indexOf(city) - 1
        val boldSpan = StyleSpan(Typeface.BOLD)
        spannable.setSpan(boldSpan,0,cityIndex,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        holder.mTitleView?.text  =spannable
        return


    }

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2011-05-18
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多