Удалить курсор из editText

Возможный дубликат:
Отключить мигающий курсор EditText

У меня есть 2 поля editText в моей деятельности с некоторым текстом в нем:

EditText nameText=(EditText) findViewById(R.id.update_name_text);
nameText.setText(Info.getName());

EditText phone=(EditText) findViewById(R.id.phone_number);
phone.setText(Info.getPhoneNo());

Когда я запускаю приложение на своем устройстве и нажимаю на поле nameText, появляется курсор и клавиатура. Однако, когда я скрываю клавиатуру, клавиатура уходит, но курсор остается. Как я могу сделать курсор невидимым, а также.

Когда я нажимаю enter от nameText, курсор переходит в поле phone, и клавиатура все еще видна. Это нормально. Но когда я скрываю клавиатуру или нажимаю Enter в поле phone, клавиатура исчезает, но курсор остается.

Есть ли способ (кроме использования setOnEditorActionListener), чтобы сделать курсор невидимым в приведенных выше ситуациях?

Ответ 1

чтобы удалить курсор из edittext, вам нужно установить

nameText.setFocusable(false);

и видимый набор курсоров

nameText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                nameText.setFocusableInTouchMode(true);

                return false;
            }
});

покажет курсор в edittext...

Ответ 2

android:cursorVisible в XML или setCursorVisible() в коде, чтобы скрыть/показать курсор, и вы можете использовать метод, описанный здесь, чтобы определить, когда клавиатура имеет появился и исчез.

Ответ 3

В Xml файле Вы можете увидеть, что атрибут <requestFocus> был добавлен автоматически для EditText.

Итак, всякий раз, когда начинается действие, ваш EditText получает фокус.

Поэтому сначала удалите его и попробуйте...

Добавленный ответ:

Если вы не хотите редактировать поле nameText

Вы можете использовать

nameText.setEnabled(false);

А также Если u хочет отредактировать это в некотором случае,

Вы можете сделать,

nameText.setEnabled(true);

Тем не менее вы можете обновить поле nameText программным путем,

для примера, используя nameText.setText(Info.getname());

Если вы хотите, чтобы пользователь вносил изменения в видимый текст, вы можете сделать

nameText.setEnabled(true);

Он будет работать так, как вы ожидаете.