J'ai une activité avec une Edit Text
entrée. Lorsque l'activité est initialisée, le clavier Android s'affiche. Comment le clavier peut-il rester caché jusqu'à ce que l'utilisateur concentre l'entrée?
android:windowSoftInputMode="adjustPan"
?
J'ai une activité avec une Edit Text
entrée. Lorsque l'activité est initialisée, le clavier Android s'affiche. Comment le clavier peut-il rester caché jusqu'à ce que l'utilisateur concentre l'entrée?
android:windowSoftInputMode="adjustPan"
?
Réponses:
Je pense que ce qui suit peut fonctionner
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Je l'ai déjà utilisé pour ce genre de choses.
EditText
? :) C'est pour cacher le clavier lorsque l'activité commence qui contientEditText
Essayez aussi -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Sinon, déclarez dans l'activité de votre fichier manifeste -
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
Si vous avez déjà utilisé android:windowSoftInputMode
une valeur comme adjustResize
ou adjustPan
, vous pouvez combiner deux valeurs comme:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Cela masquera le clavier chaque fois que cela sera approprié, mais effectuera un panoramique dans la vue d'activité au cas où le clavier doit être affiché.
Cachez-le pour toutes les activités utilisant le thème
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
définir le thème
<application android:theme="@style/MyTheme">
Ajoutez ces deux propriétés à votre disposition parent (ex: disposition linéaire, disposition relative)
android:focusable="false"
android:focusableInTouchMode="false"
Ça fera l'affaire :)
true
fonctionner, selon la réponse de Jack T. Y a-t-il eu un changement de comportement dans les versions récentes?
false
devrait fonctionner, car l'idée est de détourner l'attention des zones EditText.
Essayez de le déclarer dans le fichier menifest
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Il suffit d'ajouter dans AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
Vous pouvez également écrire ces lignes de code dans la disposition parent directe du fichier de disposition .xml dans lequel vous avez le "problème":
android:focusable="true"
android:focusableInTouchMode="true"
Par exemple:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
ÉDITER :
Exemple si le EditText est contenu dans une autre mise en page:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
La clé est de s'assurer que le EditText n'est pas directement focalisable.
Au revoir! ;-)
Meilleure solution pour moi, collez votre classe
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
Fonction pour masquer le clavier.
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
Masquer le clavier dans le fichier AndroidManifext.xml.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
Pour développer la réponse acceptée par @Lucas:
Appelez cela depuis votre activité dans l'un des premiers événements du cycle de vie:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Vous pouvez essayer cet attribut unique défini pour chaque élément
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
Le clavier ne s'affichera pas lorsque l'élément est mis au point
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
ajoutez simplement ceci sur votre Activité:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>