J'ai une activité avec une entrée Edit Text
. Lorsque l'activité est initialisée, le clavier Android est affiché. Comment le clavier peut-il rester masqué jusqu'à ce que l'utilisateur focalise la saisie?
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 chose.
Essayez ceci 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
pour une valeur telle que adjustResize
ou adjustPan
, vous pouvez combiner deux valeurs telles que:
<activity
...
Android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Cela permet de masquer le clavier à tout moment, mais de déplacer la vue d'activité au cas où le clavier devrait ê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 mise en page parent (ex: mise en page linéaire, mise en page relative)
Android:focusable="false"
Android:focusableInTouchMode="false"
Ça va faire l'affaire :)
Essayez de le déclarer dans le fichier manifeste
<activity Android:name=".HomeActivity"
Android:label="@string/app_name"
Android:windowSoftInputMode="stateAlwaysHidden"
>
Si vous utilisez le niveau 21 de l'API, vous pouvez utiliser editText.setShowSoftInputOnFocus (false);
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 du fichier de disposition .xml dans lequel vous avez le "problème": Voici le code:
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>
L'essentiel 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 cacher 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">
Ajoutez simplement ceci dans votre fichier manifest.xml
<activity Android:name=".MainActivity"
Android:windowSoftInputMode="stateHidden">
Vous êtes tous fait.
Vous pouvez essayer cet attribut unique pour chaque élément
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
Le clavier ne s'affichera pas tant que l'élément est actif
//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);
}