Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
737 views
in Technique[技术] by (71.8m points)

scrollview - android auto scroll when clicked on edittext

When user click on edittext I want the screen to scroll to show the edittext in the middle of the screen. So I tried to listen to touch (setOnTouchListener, also tried with onClick and onFocuse) and then smoothScrollTo screen to put the edittext in the middle of the screen.

but for some reason when I add the setOnTouchListener to the edittext it doesn't get focus at all.

what do I need to fix? or how can I achieve this?

this is the setOnTouchListener code that cause the edittext not to get focused when clicked:

    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;
        }
    });
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Returning true from the onTouch() method indicates that the touch event is being consumed there. To allow the event to propagate through to the View's own touch listener, you need to return false;.

To get the EditText to gain focus after the ScrollView has finished its scroll, you can post a Runnable to the ScrollView's handler to request focus on the EditText. For example:

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;
        }
    }
);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...