J'ai un Edittext avec Android:windowSoftInputMode="stateVisible"
dans Manifest. Maintenant, le clavier sera affiché lorsque je commence l'activité. Comment le cacher? Je ne peux pas utiliser Android:windowSoftInputMode="stateHidden
parce que, lorsque le clavier est visible, minimisez l'application et relancez-le, le clavier doit être visible. J'ai essayé avec
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
mais cela n'a pas fonctionné.
Utilisez les fonctions suivantes pour afficher/masquer le clavier:
/**
* Hides the soft keyboard
*/
public void hideSoftKeyboard() {
if(getCurrentFocus()!=null) {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
/**
* Shows the soft keyboard
*/
public void showSoftKeyboard(View view) {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
view.requestFocus();
inputMethodManager.showSoftInput(view, 0);
}
Dans le AndroidManifest.xml
:
<activity Android:name="com.your.package.ActivityName"
Android:windowSoftInputMode="stateHidden" />
ou essayer
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
S'il vous plaît vérifier this aussi
Ajoutez simplement deux attributs à la vue parent de editText.
Android:focusable="true"
Android:focusableInTouchMode="true"
Mettez ceci dans le manifeste à l'intérieur de la balise Activity
Android:windowSoftInputMode="stateHidden"
Essaye ça:
<activity
...
Android:windowSoftInputMode="stateHidden|adjustResize"
...
>
Regardez this un pour plus de détails.
Pour masquer le clavier logiciel au moment du démarrage de la nouvelle activité ou onCreate()
, onStart()
etc., vous pouvez utiliser le code ci-dessous:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Utilisation de AndroidManifest.xml
<activity Android:name=".YourActivityName"
Android:windowSoftInputMode="stateHidden"
/>
Utilisation de Java
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
utiliser la solution ci-dessus pour masquer le clavier mais empêcher la prise de focus par edittext lors de la création de l'activité, mais saisissez-la lorsque vous les touchez à l'aide de:
ajouter dans votre EditText
<EditText
Android:focusable="false" />
ajouter également un auditeur de votre EditText
youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.setFocusable(true);
v.setFocusableInTouchMode(true);
return false;
}});
Ajoutez le texte suivant à votre fichier XML.
<!--Dummy layout that gain focus -->
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:orientation="vertical" >
</LinearLayout>
J'espère que cela fonctionnera, j'ai essayé beaucoup de méthodes mais celle-ci a fonctionné pour moi dans fragments
. il suffit de mettre cette ligne dans onCreateview/init.
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Pour masquer le clavier logiciel au moment du démarrage de la nouvelle activité ou de la méthode onCreate (), onStart (), utilisez le code ci-dessous:
getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Pour masquer le clavier logiciel au moment du bouton est en activité:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
assert imm != null;
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Utilisez le code suivant pour masquer le clavier logiciel pour la première fois au démarrage de l'activité.
getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Mettez ce code dans votre fichier Java et passez l'argument de object sur edittext,
private void setHideSoftKeyboard(EditText editText){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
Vous pouvez configurer config sur AndroidManifest.xml
Exemple:
<activity
Android:name="Activity"
Android:configChanges="orientation|keyboardHidden"
Android:theme="@*Android:style/Theme.NoTitleBar"
Android:launchMode="singleTop"
Android:windowSoftInputMode="stateHidden"/>
Essayez celui-ci aussi
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);
Ed_Cat_Search.setInputType(InputType.TYPE_NULL);
Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
Ed_Cat_Search.onTouchEvent(event); // call native handler
return true; // consume touch even
}
});
Essaye ça.
Tout d’abord dans votre xml interrogeable, les champs (nom et indice, etc.) mettent @string
et non des chaînes littérales.
Ensuite, la méthode onCreateOptionsMenu
doit comporter un objet ComponentName
avec votre nom de package et votre nom de classe terminé (avec nom de package) - Dans le cas où l’activité ayant le composant SearchView
est identique à la afficher les résultats de la recherche, utilisez getComponentName()
, comme l'indique le développeur de Google Android.
J'ai essayé beaucoup de solutions et après beaucoup de travail, cette solution fonctionne pour moi.
Utilisez SOFT_INPUT_STATE_ALWAYS_HIDDEN au lieu de SOFT_INPUT_STATE_HIDDEN
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
C'est ce que j'ai fait:
yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
yourEditText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.onTouchEvent(event); // handle the event first
InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0); // hide the soft keyboard
yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
}
return true;
}
});
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
ça va marcher
Si votre application cible API Android de niveau 21 ou plus, une méthode par défaut est disponible.
editTextObj.setShowSoftInputOnFocus(false);
Assurez-vous que vous avez défini le code ci-dessous dans la balise XML EditText
.
<EditText
....
Android:enabled="true"
Android:focusable="true" />
ajoutez dans votre activité dans les manifestes cette propriété
Android:windowSoftInputMode="stateHidden"
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);
Ed_Cat_Search.setInputType(InputType.TYPE_NULL);
Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
Ed_Cat_Search.onTouchEvent(event); // call native handler
return true; // consume touch even
}
});
this one worked for me