9
votes

Android Retirez le clavier souple lorsque vous touchez la liste de liste

Dans ma candidature, j'ai une vue avec une liste de recherche de listeView et de recherche à rechercher dans la liste de réception. Lorsque vous appuyez sur la barre de recherche, il reçoit la mise au point et le clavier logiciel se présente. Lorsque je touche la listeView, le clavier reste en haut de la liste de liste, je ne vois donc pas beaucoup de ma liste de liste.

Ma question: Comment savoir si la liste de liste a été touchée / défilée / ... et comment puis-je supprimer le clavier logiciel et supprimer la mise au point de l'editext?


1 commentaires

Bonjour, j'ai une question ici si possible pouvez-vous me dire par défaut que votre barre de recherche ne montre pas la touche de touche logicielle. Je suis mon application dès que l'activité commence la carte de touche programmable apparaît.


4 Réponses :


3
votes

Jetez un coup d'œil à cette question pour savoir Comment fermer le clavier, comme pour savoir si la liste ListView a été défilé, vous pouvez étendre la classe ListView et remplacer la méthode OnscrollChanged () et faire ce que vous voulez quand ils défilent sont interagi avec

EDIT: Il y a en fait un Onscrolllistener pour écouter Pour faire défiler les modifications dans une liste de réception


0 commentaires

17
votes

Basé sur @androidnoob Réponse, je poste ici (pour les autres ayant ce problème spécifique), le code complet nécessaire. XXX


0 commentaires

0
votes

YourlistView.setonscrolllistener (Nouveau Abslistview.onscrolllistener () {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (scrollState != 0){

                InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);

            }
        }
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

        }
    });


0 commentaires

0
votes

@ Dr.Luiji Réponse fonctionne, mais je pense qu'il est préférable de masquer la touche programmable immédiatement après la touche de l'utilisateur.

    myListView.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(((Activity) mContext).getCurrentFocus().getWindowToken(), 0);
            }
        }
    });


0 commentaires