如何在Android上创建可复制的TextView(如IDE)

时间:2014-02-08 13:27:58

标签: android textview color-scheme

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

sample

我认为我应该使用html进行颜色,并且还将使用字符串函数,例如indexof,substring ..首先,将找到“for”,如果我找到它,我将用

替换它
  <h3 style="color:blue;margin-left:20px;">for</h3> 

但我不确定它是最好的方式还是有用的..你有什么想法在Android上做的吗?

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

PS2:我不是要求webview或textview ..只是想学习除了我的html案例之外我该怎么做。无关紧要webview或textview或editview

2 个答案:

答案 0 :(得分:2)

试试这个

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);
}

答案 1 :(得分:0)

感谢所有人的关注,我完全找到了我想要的解决方案。 我使用了codemirror库,并为android找到了一个示例。

您可以从code google

下载该项目