Android:具有多种颜色和字体的TextView

Android:具有多种颜色和字体的TextView,第1张

概述好的,所以我认为这应该是一个相当简单的过程.我已阅读以下问题:>MultipleTypefacesinthesameTextView>MultipleTypefacesinthesameTextView>PutinboldsomepartsofaTextView>MakingpartofastringboldinTextView在所有这些问题和答案中,建议似乎都非

好的,所以我认为这应该是一个相当简单的过程.

我已阅读以下问题:

> Multiple Typefaces in the same TextView
> Multiple Typefaces in the same TextView
> Put in bold some parts of a TextView
> Making part of a string bold in TextView

在所有这些问题和答案中,建议似乎都非常相似.我试图避免使用HTML技术,而是改用SpannableString和SpannableStringBuilder.最终,我希望能够在单个TextVIEw中使用多个不同的字体,但是现在,我只想弄清楚如何使多种颜色起作用.

我正在尝试以这种方式实现这些技术:

// Get a typeface for my custom FontString regularFontPath          = "Fonts/Abel-Regular.ttf";Typeface regularTf              = Typeface.createFromAsset(getActivity().getAssets(), regularFontPath);// Set the label's typeface (this part is working)mItemCodesLabel.setTypeface(regularTf);// Create a spannable builder to build up my// TextVIEw's content from dataSpannableStringBuilder builder  = new SpannableStringBuilder();// These colors are defined and working well in other parts of my appForegroundcolorSpan ltGraySpan  = new ForegroundcolorSpan(R.color.light_gray);ForegroundcolorSpan dkGraySpan  = new ForegroundcolorSpan(R.color.dark_gray);// mCodesList has good data and the actual data output from this// loop is correct. Just the styling is wrongfor (int i = 0; i < mCodesList.size(); i = i + 1) {    ParSEObject code            = mCodesList.get(i);    String value                = code.getString("value") + " | ";    if (i > 0) {        // I want new codes to be on a new line (this works)        value                   = "\n" + value;    }    SpannableString valueSpan   = new SpannableString(value);    valueSpan.setSpan(ltGraySpan, 0, value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    builder.append(valueSpan);    String loc                  = code.getString("location");    SpannableString locSpan     = new SpannableString(loc);    locSpan.setSpan(dkGraySpan, 0, loc.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    builder.append(locSpan);}mItemCodesLabel.setText(builder);

最终结果是TextVIEw包含正确的文本内容. TextVIEw是正确的字体.但是TextVIEw的全部内容都是我的@ color / light_gray颜色.我不确定为什么,因为在XML布局文件中,我指定了@ color / dark_gray颜色(希望通过设置Spannable设置文本来覆盖该颜色).即使我将两个ForegroundcolorSpan对象都更改为使用R.color.dark_gray,TextVIEw仍然显示为浅灰色.我没有在代码的其他任何地方设置文本的颜色,所以我真的很茫然.

我在运行4.4.2的LG Optimus G Pro上运行它.我还有另一个TextVIEw,我需要在其中获得多种颜色和字体,甚至在文本的某些部分下划线,所以对我来说这是一个很大的问题.我要去哪里错了?

解决方法:

使用getResource().getcolor(R.color.light_gray)检索要传递给ForegroundcolorSpan的颜色.我怀疑它是在内部为您检索.您可能需要在每次迭代时实例化一个新的ForegroundcolorSpan.无法重复使用

总结

以上是内存溢出为你收集整理的Android:具有多种颜色和字体的TextView全部内容,希望文章能够帮你解决Android:具有多种颜色和字体的TextView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存