6

I am making an app that involves coding and I need edittext to recognize if the word typed was 'something' then depending if it is registered to be colored, it will color the word. Here is what I want to do, when the user is typing and types 'function' I want it to automatically highlight. Same goes to any other 'function' word, '()', ' " ', and many other words the user types.

3
  • 3
    Don't use == to compare value of Strings, even in example. Use equals instead. Commented Dec 18, 2013 at 21:30
  • == Should be used only to compare reference. To compare values, use string1.equalsIgnoreCase(string2) method Commented Dec 18, 2013 at 21:33
  • Does this mean I can use == if I compare it to values? And if I don't do I just put = ? Commented Dec 18, 2013 at 21:44

1 Answer 1

8

You can accomplish this by using a TextWatcher like so:

    editText.addTextChangedListener(new TextWatcher() {
        final String FUNCTION = "function";
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable s) {
            int index = s.toString().indexOf(FUNCTION);
            if (index >= 0) {
                s.setSpan(
                        new ForegroundColorSpan(Color.CYAN),
                        index,
                        index + FUNCTION.length(),
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
    });
Sign up to request clarification or add additional context in comments.

4 Comments

I really appreciate for you taking your time in making this example but I tried to use it and when I start typing the word is not highlighted.
Never mind it works perfectly all I changed was if (index >= 0) and now it works like a charm!! THANKS!!
You're welcome and thanks for finding the mistake (fixed now). Note that this will only catch the first occurrence of the word, but it's not hard to figure out how to highlight all occurrences.
Is there a way to get rid of the highlighting when I write between {} ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.