web-dev-qa-db-ja.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>

事とそれは何もしませんでした。

50
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">

役立つと思う。

129
Mudassir

いいえ、作業はありません... Android:windowSoftInputMode = "stateAlwaysHidden"をManifest.xmlファイルのアクティビティタグに追加するだけです。

7
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();
    }
6
krishnamurthy
<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>

他のコーディングは不要で、シンプルで明確なソリューションです。

4
MahmutKarali

キーボードを非表示にするために非表示のウィンドウソフト入力モードと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
<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

それは私のために働いた、願いもあなたを助けるでしょう。

いずれか:

Android:windowSoftInputMode="stateAlwaysHidden"

このプロパティを、オートフォーカスを無効にする特定のアクティビティの下のManifest.xmlファイルに追加します。 短所:ソフトキーボードのみが非表示になり、カーソルはそのままになります。

その他:

 Android:focusableInTouchMode="true"

このプロパティをUI xmlファイル(親レイアウトの下)に追加して、キーボードとフォーカスの両方を非表示にします。

1
Tarit Ray

ヘイ リー

これを行うにはいくつかの方法がありますが、 Mudassir がその方法を提供します。

アイデアがうまくいかない場合は、単純なことをしてください-

あなたのAndroidManifest>Activity次の簡単なコードを追加します。

Android:windowSoftInputMode="stateHidden"

XMLのEditTextで行う必要はありません。すべてが機能し、フォーカスは表示されません。

実際のサンプルコードを見てください:

<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

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>
0
Azad Qaderzadeh

デフォルトのrequestFocuseをクリアするには、以下のようにビューの親focusable = "true"を設定する必要があります

<Android.support.constraint.ConstraintLayout
                Android:id="@+id/coordinatorChild"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:focusable="true"
                Android:focusableInTouchMode="true">
0
Majid Khosravi

メインレイアウトビューのxmlタグに次を追加するだけです。

 Android:focusableInTouchMode="true"
0
S bruce