Остановите EditText от получения фокуса при запуске Activity - PullRequest
2679 голосов
/ 12 октября 2009

У меня есть Activity в Android, с двумя элементами:

  1. EditText
  2. ListView

Когда мой Activity запускается, EditText сразу же имеет фокус ввода (мигающий курсор). Я не хочу, чтобы какой-либо элемент управления имел фокус ввода при запуске. Я попробовал:

EditText.setSelected(false);

Не повезло. Как я могу убедить EditText не выбирать себя при запуске Activity?

Ответы [ 49 ]

2 голосов
/ 09 февраля 2011

1001 * попробовать *

edit.setInputType(InputType.TYPE_NULL);

edit.setEnabled(false);
2 голосов
/ 24 августа 2016

Самый простой способ - добавить android:windowSoftInputMode="stateAlwaysHidden" в тег активности файла Manifest.xml

1 голос
/ 02 января 2019

Это может быть достигнуто путем наследования EditText и переопределения onTouchEvent.

class NonFocusableEditText: EditText {

    constructor(context: Context): super(context)
    constructor(context: Context, attrs: AttributeSet?): super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): super(context, attrs, defStyleAttr)

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        return if (isFocusable) super.onTouchEvent(event) else false
    }
}

Тогда вы можете использовать его в макетах, как обычно EditText:

<com.yourpackage.NonFocusableEditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"    
        android:hint="@string/your_hint"
        android:imeOptions="actionDone"
        android:inputType="textNoSuggestions" />
1 голос
/ 27 мая 2014

Отключить его в onCreate ()

final KeyListener edtTxtMessageKeyListener = edtTxtMessage.getKeyListener();
edtTxtMessage.setCursorVisible(false);
edtTxtMessage.setKeyListener(null);

И, наконец, включите его в onClick () EditText

edtTxtMessage.setCursorVisible(true);
edtTxtMessage.setKeyListener(edtTxtMessageKeyListener);

Но проблема в том, что мы должны щелкнуть по кругу, чтобы вывести OnScreenKeyboard в самый первый раз.

@ Обход

InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);

Попробуйте также в onClick ():)

1 голос
/ 04 февраля 2015

удалить <requestFocus /> из вашего редактируемого текста в xml-файле

<EditText
   android:id="@+id/emailField"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:inputType="textEmailAddress">

   //`<requestFocus />` /* <-- remove this tags */
</EditText>`
1 голос
/ 02 января 2017

Сделай это и сделай свою работу!

android:focusable="true"
android:focusableInTouchMode="true" 
1 голос
/ 21 апреля 2015
<EditText
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:id="@+id/etComments"
    android:hint="Comments.."
    android:textSize="14dp"

    android:focusable="false"

    android:textStyle="italic"/>
0 голосов
/ 10 мая 2019

Если вы хотите спрятать клавиатуру в начале упражнения. Тогда упомяните

андроида: windowSoftInputMode = "stateHidden"

Для этого действия в файле манифеста. Проблема решена.

Приветствие.

0 голосов
/ 22 февраля 2019

добавить строку ниже в файле манифеста, где вы упомянули свою деятельность

android:windowSoftInputMode="stateAlwaysHidden"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...