it-roy-ru.com

Отключить автофокус при редактировании текста

У меня есть текст для редактирования:

   <LinearLayout Android:id="@+id/linearLayout7" Android:layout_width="match_parent" Android:layout_height="wrap_content">
        <EditText Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:layout_weight="1" Android:id="@+id/editText1" Android:text="3">
            <requestFocus></requestFocus>
        </EditText>
        <Button Android:text="Button" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/button2"></Button>
    </LinearLayout>

а затем некоторые другие вещи под

У меня проблема в том, что когда приложение начинает фокусироваться на вводе, я не хочу фокусироваться на вводе прямо при запуске приложения.

Я пытался удалить 

<requestFocus></requestFocus>

вещь, и она ничего не делала.

42
Saad

Добавьте элементы Android:focusable="true" и Android:focusableInTouchMode="true" в родительский макет EditText следующим образом;

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/linearLayout7" Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:focusable="true" Android:focusableInTouchMode="true">

Я думаю, это должно помочь вам.

110
Mudassir

НЕТ Больше работы ... просто добавьте Android: windowSoftInputMode = "stateAlwaysHidden" В тег активности файла Manifest.xml.

5
Nishanth S Babu

Если вы хотите очистить фокус по умолчанию для редактируемого текста, используйте следующие 2 атрибута

Android:focusable="false"
 Android:focusableInTouchMode="true"

внутри родительского линейного макета.

например:

<LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:focusable="false"
            Android:focusableInTouchMode="true"
            Android:orientation="vertical">


     <EditText
         Android:layout_width="match_parent"
         Android:layout_height="wrap_content"
         Android:hint="email id"
         Android:inputType="textEmailAddress"
         Android:maxLines="1"
    />

</LinearLayout>

Если вы хотите скрыть клавиатуру при создании активности, используйте эти атрибуты внутри тега активности файла манифеста Например:

 <activity
     Android:configChanges="screenSize|orientation|keyboardHidden"
     Android:screenOrientation="portrait"
     Android:name=".activities.LoginActivity"
     Android:windowSoftInputMode="stateHidden|adjustResize"/>

Если вы хотите скрыть клавиатуру при нажатии кнопки или при возникновении какого-либо события, используйте следующий код 

 public void onClick(View v) {
                try {
                    //InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm.isAcceptingText()) {
                        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }

Если вы хотите снять фокус с редактирования текстовых полей после выхода из упражнения 

@Override
    protected void onResume() {
        super.onResume();
        mEmail.clearFocus();
        mPassword.clearFocus();
}

И, наконец, если вы хотите очистить данные в текстовых полях редактирования при отправке формы, используйте 

 @Override
    protected void onResume() {
        super.onResume();
        mEmail.getText().clear();
        mPassword.getText().clear();
    }
4
krishna murthy

Вы можете использовать скрытый оконный режим ввода для скрытия клавиатуры и Android:focusable="false" и Android:focusableInTouchMode="true"

<activity
    Android:name=".MainActivity"
    Android:windowSoftInputMode="stateHidden"
    Android:label="@string/app_name"
    >

    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />
        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
2
Manish Singh
<LinearLayout 
    Android:focusable="true"
    Android:focusableInTouchMode="true" 
    Android:layout_width="0px"
    Android:layout_height="0px" />

 <EditText Android:text="" 
    Android:id="@+id/EditText01"
    Android:layout_width="wrap_content" 
    Android:layout_height="wrap_content"
    Android:hint="@string/hint">
 </EditText>

Никакого другого кодирования не требуется, это простое и понятное решение.

2
MahmutKarali
<EditText
        Android:id="@+id/input"
        Android:layout_width="0dp"
        Android:layout_height="48dp"
        Android:focusable="false"
        Android:focusableInTouchMode="false" />

detailInputView = (EditText) debugToolsView.findViewById(R.id.input);
    detailInputView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            detailInputView.setFocusable(true);
            detailInputView.setFocusableInTouchMode(true);
            return false;
        }
    });
1
Jack Xu

попробуйте этот код в LinearLayout

 <LinearLayout
        Android:focusable="true"
        Android:focusableInTouchMode="true"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <EditText

            Android:hint="Search..."
            Android:drawableRight="@drawable/ic_search"
            Android:id="@+id/search_tab_hotbird_F"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" />

        <Android.support.v7.widget.RecyclerView
            Android:id="@+id/recyHotbird_F"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:padding="4dp">

        </Android.support.v7.widget.RecyclerView>

    </LinearLayout>
1
Azad Qaderzadeh

Hei Lee ,

Есть несколько способов сделать это, Мудасир дал вам способ сделать это.

Если идея не работает, то просто сделай

В вашем AndroidManifest>Activity добавьте этот простой код:

Android:windowSoftInputMode="stateHidden"

Ничего не нужно делать в EditText в XML, все будет работать, и фокус не появится.

Посмотрите пример кода из реальной жизни:

<activity
        Android:name=".MainActivity"
        Android:windowSoftInputMode="stateHidden"
        Android:label="@string/app_name"
        >

        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>
0
Maniruzzaman Akash

Просто добавьте следующее в ваш основной тег вида макета:

 Android:focusableInTouchMode="true"
0
S bruce