Reputation: 133
I'm trying to color a word (house) as long as user types "house" in the edittext. This is what I've done:
if (textA.getText().toString().equals("house")){
String name = String.valueOf(textA.getText().toString().equals("house"));
name.setTextColor(Color.parseColor("#bdbdbd"));
}
my xml is as follows
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:layout_marginEnd="15dp"
android:orientation="vertical"
android:padding="5dp">
<EditText
android:id="@+id/textA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:inputType="textMultiLine"
android:maxLines ="4"
android:maxLength ="2000"
android:textColorHint="@color/grey"
android:background="@android:color/transparent"
android:gravity="top"/>
</LinearLayout>
however this causes the app to crash. Dont know what it is I'm doing wrong. I'm new to android. Any advice please?
Upvotes: 4
Views: 230
Reputation: 6981
this works for me
textA.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String str="home";
Spannable spannable =textA.getText();
if(s.length() != 0) {
textA.setTextColor(Color.parseColor("#0000FF"));
ForegroundColorSpan fcs = new ForegroundColorSpan( Color.GREEN);
String s1 = s.toString();
int in=0; // start searching from 0 index
// keeps on searching unless there is no more function string found
while ((in = s1.indexOf(str,in)) >= 0) {
spannable.setSpan(
fcs,
in,
in + str.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// update the index for next search with length
in += str.length();
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Upvotes: 1
Reputation: 735
equals return values is boolean. so you have to change it.
public boolean equals(Object anObject)
if (textA.getText().toString().equals("house")){
textA.setTextColor(Color.parseColor("#bdbdbd"));
}
Upvotes: 0
Reputation: 6622
You have to write code like below
textA.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void
beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override public void onTextChanged(CharSequence s, int start, int
before, int count) {
if(s.length() != 0 && s.contains("home")) name.setTextColor(Color.parseColor("#bdbdbd"));
});
Upvotes: 1