java - 仅在一行 String Android 中更改文本颜色

标签 java android string textview textcolor

我目前正在开发一个电子邮件应用程序,当您进入查看屏幕时,它会在顶部显示消息,如果它是一系列电子邮件,则在其下方将显示:

------ 原始消息 ------

& 它下面的上一条消息。

目前,所有这些文本都是白色的,但我想将所有文本显示为白色,除了:

------ 原始消息 ------

因为这是一个电子邮件应用程序,不同的提供商对原始消息字符串的格式不同(参见下面的示例:)

  • ----原始消息----
  • ---- 原始消息----
  • ------原始消息------
  • ------ 原始消息 ------

我如何才能让包含“原始消息”(和破折号(不管有多少破折号))的整行变成蓝色?

如果这是一个普通的 textView,并且我知道字符串中的文本,那么我可以使用:

String startText = "Test - received<br><br>";
String textColor = "<font color='#0475F7'>-------- Original Message --------</font><br><br>";
String endText = "From: Test 124<br>" + "To: Test 125<br>" + "Subject: " + "&lt;" + "confirm" + "&gt;" + "<br>" + "Sent: January 30, 2017 3:40:42 PM GMT+00:00<br><br>" + "Test";

String text = startText + textColor + endText;

messageTextView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);

但由于这是一个电子邮件应用程序,我无法确定每次都会出现在字符串中的文本,因为每封电子邮件都会有所不同。整个消息(所以消息的顶部,“原始消息”行和下面的消息都包含在一个字符串中)。

我做了以下尝试:

if (message.contains("Original Message")) {

    int counter = message.split("-", -1).length - 1;
    int sideone = counter / 2;
    int sidetwo = counter / 2;
    Log.d(TAG, "COUNTER: " + counter);

    int startPosition = message.indexOf("-");
    int endPosition = message.lastIndexOf("-");

    Log.d(TAG, "START POS: " + startPosition + " " + "END POS: " + endPosition);

    String requiredString = message.substring(startPosition, endPosition);

    Log.d(TAG, "REQUIRED STRING: " + requiredString);

    messageTextView.setText(message);

  } else {
    messageTextView.setText(message);
  }

虽然计数器会告诉我有多少破折号,但我无法弄清楚如何使用它来获得中间有破折号和“原始消息”部分的整行。同样使用 requiredString 方法也可以工作(但从末尾剪掉一个破折号),如果用户在他们的电子邮件中的某处使用了一个破折号,那么它就不会工作,因为它会尝试在“原始消息”之前获取破折号' 线。

因此,我正在寻找一种方法来执行以下操作:

  • 检索字符串中包含单词“Original Message”及其所有破折号的整行
  • 将颜色设置为蓝色 (#0475F7)
  • 将 textView 设置为顶部的消息文本(白色)+“原始消息”行(蓝色),然后是底部的消息(白色)

最佳答案

解决此问题的最佳方法是使用 HTML/XML 标记。 Android 具有能够解析 HTML/XML 并添加所需必要样式的类。看这个link .

如果你不想走 HTML 路线,你也可以查看 Span类。

希望这对您有所帮助。

关于java - 仅在一行 String Android 中更改文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41982530/

相关文章:

android - 权限被拒绝 : File created in . ../文件

android - 我们如何设置 Vertical TextView?

swift - 快速检查或验证波斯语(波斯语)字符串

java - 解析月份不带前导 0 的日期

java - Vaadin 布局间距

android - 使用 Purchase Status API 验证 Google Play 收据,但总是收到 403 forbidden

java - 替换部分正则表达式

python - 在不允许 str.split() 的情况下反转字符串的词序

java - 在命令提示符下使用 powershell 运行 java 可执行文件

java - Tomcat7 SESSIONID在应用redis RedisSessionManager应用后不断变化