单击edittext时自动滚动

Yuv*_*evy 1 android scrollview ontouchlistener

当用户点击edittext时,我希望屏幕滚动以在屏幕中间显示edittext.所以我试着听touch(setOnTouchListener,也试过onClick和onFocuse)然后smoothScrollTo屏幕将edittext放在屏幕中间.

但出于某种原因,当我将setOnTouchListener添加到edittext时,它根本没有得到焦点.

我需要修理什么?或者我怎样才能做到这一点?

这是setOnTouchListener代码,它导致edittext在单击时不会聚焦:

    et_email.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            ScrollView scrollView = (ScrollView)getView().findViewById(R.id.ScrollViewSendDetails);
            scrollView.smoothScrollTo(0, et_email.getBottom());
            return true;
        }
    });
Run Code Online (Sandbox Code Playgroud)

Mik*_* M. 6

true从该onTouch()方法返回表示在那里正在消费触摸事件.要允许事件传播到View自己的触摸侦听器,您需要return false;.

为了得到EditText后获得焦点ScrollView已经完成了它的滚动,你可以发布RunnableScrollView的处理要求重点EditText.例如:

et_email.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            ...
            scrollView.smoothScrollTo(0, et_email.getTop());
            scrollView.post(new Runnable() {
                    @Override
                    public void run() {
                        et_email.requestFocus();
                    }
                }
            );
            return false;
        }
    }
);
Run Code Online (Sandbox Code Playgroud)