如何在Android上创建可克隆的文本视图(如IDE)

如何在Android上创建可克隆的文本视图(如IDE),android,textview,color-scheme,Android,Textview,Color Scheme,我想创建一个包含编程语言代码的TextView。如下图所示 我认为我应该使用html来表示给定颜色,还将使用字符串函数,如indexof、substring。。首先,我会找到,如果我找到了,我会用 <h3 style="color:blue;margin-left:20px;">for</h3> 但是我不确定这是最好的方法还是有用的。。你有没有在安卓系统上实现的想法 PS:我不是在做编译器,只是想展示一段代码 PS2:我不是要webview或textview。。我

我想创建一个包含编程语言代码的TextView。如下图所示

我认为我应该使用html来表示给定颜色,还将使用字符串函数,如indexof、substring。。首先,我会找到,如果我找到了,我会用

  <h3 style="color:blue;margin-left:20px;">for</h3> 
但是我不确定这是最好的方法还是有用的。。你有没有在安卓系统上实现的想法

PS:我不是在做编译器,只是想展示一段代码

PS2:我不是要webview或textview。。我只是想知道除了我的html案例之外我怎么做。webview、textview或editview都无所谓,试试这个

public static Spannable setFourDifferentFontStyle(final Context context, String original, 
                                                 String firstWord, String color1, float size, 
                                                 String secondWord, String color2, float size2, 
                                                 String thirdWord, String color3, float size3, 
                                                 String fourthWord, String color4, float size4)

 {
  // Create a new spannable with the two strings
  Spannable spannable = new SpannableString(firstWord + secondWord + thirdWord + fourthWord);

  spannable.setSpan(new RelativeSizeSpan(size), 0, firstWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color1)), 0, firstWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

  spannable.setSpan(new RelativeSizeSpan(size2), firstWord.length(), firstWord.length() + secondWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color2)), firstWord.length(),firstWord.length() + secondWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

  spannable.setSpan(new RelativeSizeSpan(size3), firstWord.length() + secondWord.length(), firstWord.length() + secondWord.length() + thirdWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color3)), firstWord.length() + secondWord.length(),firstWord.length() + secondWord.length() + thirdWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

  spannable.setSpan(new RelativeSizeSpan(size4), firstWord.length() + secondWord.length() + thirdWord.length(), original.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color4)), firstWord.length() + secondWord.length() + thirdWord.length(), original.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}

谢谢大家的关注,我已经完全找到了我想要的解决方案。 我使用了这个库,找到了一个android的示例


您可以从

下载项目。您可以使用网络视图而不是文本视图。并使用存储在资产文件夹中的一些html文件填充其内容。“真的很简单。”阿尔图德图,谢谢你的回答。是的,我知道我应该使用webview来处理html文件,但我想问一下如何用其他方法来处理它?意味着可能不使用html代码?你最好的选择是网络视图。但是,如果你真的想使用文本视图。。。看到@ArtooDetoo,我看到了thanx,但我的问题不是如何在texview上显示html之类的。我在寻找不同的方式?这与html无关。这只是我的一个想法。。也许在照片中,他们用了另一种方式?我想学…这是另一个问题!您将使用正则表达式来执行语法着色。。。谷歌到处搜索,找到无数的例子。这样你就不能有动态字符串,除非你想在每次写作前搜索文本中的关键词。谢谢分享ertan2002