Удалить курсор из 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);
Он будет работать так, как вы ожидаете.