无法更改EditText中文本的一部分的颜色

时间:2018-04-08 07:30:30

标签: android android-edittext spannablestringbuilder

我想在EditText中更改文本某些部分的颜色。我正在尝试使用代码,但它无法正常工作。

SpannableStringBuilder ssb=new SpannableStringBuilder(expression);
ForegroundColorSpan fcs=new ForegroundColorSpan(Color.rgb(181,1,1));
ssb.setSpan(fcs,startIndex,endIndex,SpannableStringBuilder.SPAN_INCLUSIVE_INCLUSIVE);
expressionEditText.setText(ssb);
expressionTextView.setText(ssb);
  

startIndexendIndex是表达式中的索引   颜色需要改变。

     

此代码适用于' expressionTextView'但不是   ' expressionEditText'

xml部分:

<EditText
android:id="@+id/expression_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_above="@id/expression_text_view"
android:gravity="bottom|end"
android:includeFontPadding="false"
android:textSize="45sp"
android:background="@android:color/transparent"
android:inputType="text"/>

<TextView
android:id="@+id/expression_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:gravity="right"
android:textSize="50sp"/>

示例:

expression="I want color to be changed";
startIndex=2;
endIndex=5;

在expressionTextView&#34; wan&#34;颜色将是指定的颜色。 在expressionEditText中,不会有任何颜色变化。

1 个答案:

答案 0 :(得分:0)

这很简单。

正如我之前在question回答的那样。

您可以通过以下代码实现此目的,我总是使用它。我试着让这个方法尽可能简单。您必须在下面的方法中仅传递<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <span class="hastooltip"> <div id="first-div" onclick="alert('a')">foo</div> <span class="tooltip">1</span> </span> <span class="hastooltip"> <div id="second-div" onclick="alert('b')">bar</div> <span class="tooltip">2</span> </span> <span class="hastooltip"> <div id="third-div" onclick="alert('c')">baz</div> <span class="tooltip">3</span> </span>Editext

如果您需要可点击的范围,可以转到我的answer。如果您还需要TextWatcher,请随时提出评论。

TextToHighLight