Android TextView中的下划线和更改文本颜色[重复]

Posted

技术标签:

【中文标题】Android TextView中的下划线和更改文本颜色[重复]【英文标题】:Underline and change text color in Android TextView [duplicate] 【发布时间】:2016-10-22 11:01:57 【问题描述】:

我正在开发一种 android 上的打字游戏。它有一个文本视图,其中包含用户必须输入的句子。每次用户必须输入的当前单词都会带有下划线,一旦用户完成一个单词,该单词将根据输入时间改变颜色(例如 >5 秒 = 红色,

我的问题是如何在文本视图中为单词添加下划线和更改颜色,这样当我给新单词下划线时,它也会保持以前的颜色?

目前我每次移动到下一个单词时都会做这样的事情

String texts = myTextView.getText().toString();
// put the next word to be underlined between <u> </u> tags
myTextView.setText(html.fromHtml(texts));

如您所见,它会在下一个单词下划线,但之前单词的所有颜色都会丢失,但我想保留这些。

感谢您的帮助!

编辑:我的文字已经固定,用户必须输入他们看到的文字。例如,我有一个句子“Sample Sentence Hello”。我希望首先在“Sample”下划线,然后在“Sentence”下划线,“Sample”变为红色或绿色,然后在“Hello”下划线,“Sample”和“Sentence”根据所花费的时间分别变为红色或绿色用户输入每个单词。

【问题讨论】:

你应该使用 Spannable 类。 ***.com/questions/3282940/… @K.Gandhi 谢谢,正如我所见,我必须存储每个单词的起始索引才能使用 Spannable。对吗? 是的,你可以这样做。这只是基本的想法......你应该更容易地挖掘并让它工作。 【参考方案1】:

试试这个方法来创建下划线

<resources>
    <string name="your_string">
        This is an <u>underline</u>.
    </string>
</resources>

Java

TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
tv.setText(content);

或者使用油漆

txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

【讨论】:

谢谢。我得到了一些东西,但这仍然不是我的想法。我想一次只在文本中加下划线/更改颜色 1 个单词,并在继续下一个单词时保持先前单词的更改颜色。 我建议将单独的单词作为字符串或制作数组,然后使用 spannable 应用颜色 是的,我想我将句子拆分成一个数组是我现在能做的最好的方法。谢谢! 很高兴为您提供帮助,如果有帮助,请接受我的回答【参考方案2】:

您可以通过编程将其设置为TextView

喜欢if else 条件。

if(time > 5)    
   String texts = myTextView.getText().toString();
   myTextView.setText(texts);
   myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
   mTextView.settextColor(Color.parsecolor("#FF0000"));

else 
   String texts = myTextView.getText().toString();
   myTextView.setText(texts);
   myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
   mTextView.settextColor(Color.parsecolor("#0000FF"));

【讨论】:

谢谢伙计,但我怎样才能一次下划线和更改颜色 1 个单词?例如,我的文本视图包含句子“Sample Sentence”,我希望它首先将“Sample”一词加下划线,然后将“Sentence”下划线,“Sample”将颜色变为红色或绿色。 @Nguyen you textstatic 或者可以写成User @Nguyen 访问这里可能会对您有所帮助。 ***.com/questions/13238298/…

以上是关于Android TextView中的下划线和更改文本颜色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Textview 中的字母间距?

如何更改 Textview 中的字母间距?

在android中更改下划线的颜色

更改 android studio 中的 textview 样式

从android中的对话框更改TextView文本

使用android中的颜色选择器更改textview的文本颜色和背景颜色