Stop ScrollView from auto-scrolling to an EditText

后端 未结 21 1354
长发绾君心
长发绾君心 2020-11-30 23:17

Seems to be a common problem without a great solution that I have found. Goal is to stop a ScrollView from auto-scrolling to an EditText (or any vi

21条回答
  •  难免孤独
    2020-11-30 23:20

    thomas88wp answer, https://stackoverflow.com/a/6486348/528746 worked for me. But I had two problems: 1. When scrolling, I wanted to hide the keyboard
    2. I had lots of EditText views and didn't want to write it for each one of them
    (I do getActivity() since I'm writing this inside a Fragment and not an activity)

        ScrollView scroll = (ScrollView)view.findViewById(R.id.layout_scroll);
        scroll.setOnTouchListener(new OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // Check if the view with focus is EditText
                if (getActivity().getCurrentFocus() instanceof EditText)
                {
                    EditText ed = (EditText)getActivity().getCurrentFocus();
                    if (ed.hasFocus()) {
    
                        // Hide the keyboard
                        InputMethodManager inputManager = (InputMethodManager)
                                getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
                        inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),
                                InputMethodManager.HIDE_NOT_ALWAYS);
                        // Clear the focus
                        ed.clearFocus();
                    }
                }
                return false;
            }
    
        });
    

提交回复
热议问题