【问题标题】:Android rich text Mark DownAndroid 富文本 Markdown
【发布时间】:2018-11-14 07:03:07
【问题描述】:

我正在寻找有关使用的库或优化示例 标记下以创建富文本。

例如,要转的东西:

1 - *粗体* -> 粗体

2 - _斜体_ -> 斜体

长示例:

3 - _Hello_ *World* -> Hello World

等等。

我见过很多应用都在使用它,比如 Discord、Whatsapp、Skype。

我做过类似的事情,但我知道它没有经过优化,可能会导致运行时错误。

【问题讨论】:

  • 您不需要库来执行此操作。在寻找库之前,请尝试弄清楚 Android SDK 原生可用的内容...
  • @Anikta 是一个丰富的编辑器,而不是降价检测器。
  • @Nirekin 我知道这是可能的,我已经做到了。但我正在寻找一种优化的方式,不会占用大量 CPU
  • @AhmadSattout 现在更改问题的标题会使已经提供的响应过时。如果您现在真的想知道如何使用 Mark Down 来做到这一点,您应该提出一个新问题,或者检查这是否已经在某处得到回答

标签: java android text formatting


【解决方案1】:

您不需要任何额外的库...

看看android.text.SpannableStringBuilder...

这将允许您获得以下文本功能:

  • 放大
  • 粗体
  • 下划线
  • 斜体
  • 删除线
  • 彩色
  • 突出显示
  • 显示为上标
  • 显示为下标
  • 显示为链接
  • 使其可点击。

这里有一个示例,说明如何在 TextView 中的单词上应用 Bold 样式:

String text = "This is an example with a Bold word...";  

// Initialize a new SpannableStringBuilder instance
SpannableStringBuilder strb = new SpannableStringBuilder(text);

// Initialize a new StyleSpan to display bold text
StyleSpan bSpan = new StyleSpan(Typeface.BOLD);

// The index where to start applying the Bold Span
int idx = text.indexOf("Bold");

strb.setSpan(
                bSpan, // Span to add
                idx, // Start of the span
                idx + 4, // End of the span 
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        );

// Display the spannable text to yourTextView
yourTextView.setText(ssBuilder);        

【讨论】:

  • 是的,但是你知道“Bold”这个词在哪里,但是很难找到字母“*”或“_”
  • 你只需要查找*-的索引...问题出在哪里?
  • 想象一下查看一个包含 100 多个字母的字符串,这并不省时
  • 也许吧,但您认为外部库会做什么,它会查看相同的字符串 no?
【解决方案2】:
SpannableStringBuilder str = new SpannableStringBuilder("Your awesome text");
str.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), start_int, end_int, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tv=new TextView(context);
tv.setText(str);

【讨论】:

  • 当你知道开始和结束时这很容易使用,而不是当你尝试使用 Markdown 时
  • 你应该有一些条件来制作什么文本来制作什么格式。不知道你不能做任何事情。还有一件事,任何第三方库也会在内部使用一些概念来了解您要格式化的文本的索引。
【解决方案3】:
猜你喜欢
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多