2010-04-12 3 views
0

Je veux ouvrir le pavé de touches lorsque nous cliquons sur ou se concentrer sur le texte d'édition.Suppose dans mon application, j'ai une vue Edittext et une vue de l'image à ce moment je clique sur la vue de l'image automatiquement le clavier sera fermé.quand je clique sur ou se concentrer sur edittext à ce moment-là seulement clavier souple sera ouvert que puis-je faire? me donner quelques suggestions.Thanks à l'avancefermer le pavé tactile lorsque je clique sur d'autres vues dans android

Répondre

2

Je suppose que ce que vous cherchez est le suivant: Close/hide the Android Soft Keyboard:

Vous pouvez forcer Android à cacher le clavier virtuel en utilisant le InputMethodManager, appelant hideSoftInputFromWindow, en passant le le jeton de la fenêtre contenant votre champ d'édition.

InputMethodManager imm = (InputMethodManager) getSystemService (Contexte.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow (myEditText.getWindowToken(), 0);

Cela forcera le clavier à être masqué dans toutes les situations. Dans certains cas vous voulez passer InputMethodManager.HIDE_IMPLICIT_ONLY comme second paramètre pour vous assurer que cacher le clavier lorsque l'utilisateur ne forcez pas explicitement apparaître (en tenant menu déroulant).

Veuillez effectuer une recherche avant de poster votre question.

0

La méthode décrite dans le link mentioned in previous post (où je ne peux pas poster cette réponse parce que le fil est protégé - fonctionnalité intéressante) fonctionne, mais la réponse ne spécifie pas WHERE (ou WHEN) pour exécuter la méthode mentionnée.

J'ai eu un problème avec le clavier virtuel restant ouvert et visible même lorsque je montre une vue complètement différente (en appelant Activity.SetContentView(otherView).) Je voulais aussi que le clavier disparaisse si un utilisateur ouvre un menu - en général, je voulais l'entrée clavier vraiment GONE !!! à moins que l'utilisateur est activement l'utiliser (comme cela devrait être)

la solution que j'ai trouvé redéfinissant la méthode onWindowVisibilityChanged et OnWindowsFocusChanged d'une vue qui contient le EditText.

public class MyView extends LinearLayout { 

EditText myEditText; 


@Override 
protected void onFinishInflate() { 
    myEditText = (EditText)findViewById(R.id.EditText01); 

    //... 

    super.onFinishInflate(); 
} 


    @Override 
protected void onWindowVisibilityChanged(int visibility) { 
    InputMethodManager imm = (InputMethodManager)_activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
    super.onWindowVisibilityChanged(visibility); 
} 

@Override 
public void onWindowFocusChanged(boolean hasWindowFocus) { 
    if(!hasWindowFocus) { 
    InputMethodManager imm = (InputMethodManager)_activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
    } 
    super.onWindowFocusChanged(hasWindowFocus); 
} 
// ... 
} 

Redéfinition fois cachera le clavier d'entrée dans la plupart des cas. aux deux lignes ci-dessus lors de l'implémentation de l'onEditorAction de l'interface de rappel EditText. Le remplacement d'une seule des deux méthodes rendra le comportement un peu différent, tester et choisir ce que vous voulez faire.

Questions connexes