【问题标题】:Change part of edittext text color [closed]更改部分edittext文本颜色[关闭]
【发布时间】:2018-06-26 22:32:03
【问题描述】:

有没有办法改变部分edittext文本的颜色?
在我的应用程序中,用户可以使用他们的用户名在帖子中标记他的朋友,现在我想在用户仍在输入时将用户名颜色更改为蓝色,以便他知道他成功标记了他的朋友(就像在 Facebook 中标记朋友一样)
我仍然没有任何代码,因为我不知道如何开始!有什么帮助吗?

【问题讨论】:

    标签: android android-layout android-edittext


    【解决方案1】:

    如果您只需要对EditText 中的用户名进行颜色处理,您可以使用Spannables。在这种情况下,ForegroundColorSpan 将是一个好的开始。

    简化的解决方案如下所示:

    String usernameToLookFor = "michael";
    String myString = "Welcome world to michael !!";
    
    //Create spannable string
    SpannableString spannableString = new SpannableString(myString);
    
    //Determine the start and end of the span i.e. which section you want colored
    //Note: loop it if username appears multiple times in main string
    int usernameStart = myString.indexOf(usernameToLookFor);
    int usernameEnd = usernameStart + usernameToLookFor.length;
    
    //Apply color spannable to SpannableString
    spannableString.setSpan(ForegroundColorSpan(ContextCompat.getColor(context, R.color.highlighted_color)),usernameStart, usernameEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    //Set spannable to edit text
    myEditText.setText(spannableString);
    

    非常粗略的回答。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      你可以在你的代码中插入一个 html 到 textView 中,然后你可以在文本的特定部分定义一种颜色:

      myTextView
      .setText(
        Html.fromHtml(
         "Your text<span color='<your color>'>colored part</span> rest of your text"
      ));
      

      【讨论】:

      • 这对 EditText 是否同样有效?因为用户将在 EditText 中输入
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多