Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

auto hides keyboard after scrolling ListView on android

Im new on android please help me to auto hide after scrolling the listview here is my code but could not get right solution

xml file :

<ListView
    android:id="@+id/offline_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#dde1e3"
    android:clickable="true"
    android:focusable="true"
     >
</ListView>

code:

        lvCustomList.setOnFocusChangeListener(new View.OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(!hasFocus)
                hideKeyboard(v);

        }

        private void hideKeyboard(View view) {
            // TODO Auto-generated method stub
            InputMethodManager inputMethodManger = (InputMethodManager)getSystemService(Activity
                    .INPUT_METHOD_SERVICE);
            inputMethodManger.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    });
like image 522
Vikash Parajuli Avatar asked May 28 '14 05:05

Vikash Parajuli


2 Answers

Try this..

why don't you use OnTouchListener for ListView like below

lvCustomList.setOnTouchListener(new OnTouchListener() {
    @Override
        public boolean onTouch(View v, MotionEvent event) {

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

        return false;
    }
});
like image 79
Hariharan Avatar answered Sep 22 '22 03:09

Hariharan


It is better to use onScrollStateChanged instead of onScroll and by using scrollState == 0. So keyboard will hide when user is really scrolling.

listview.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view,
                                         int scrollState) {

            if (scrollState == 0) {
                InputMethodManager inputMethodManger = (InputMethodManager) getActivity().getSystemService(Activity
                        .INPUT_METHOD_SERVICE);
                inputMethodManger.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }

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


        }
    });
like image 39
odemolliens Avatar answered Sep 25 '22 03:09

odemolliens