scrollTo focus / onClick事件仅在第二次单击后才起作用

时间:2015-12-15 13:26:56

标签: android onclick smooth-scrolling onfocus

当用户点击edittext时,我尝试滚动到特定点,因此添加以下代码以收听点击并关注此edittext:

    et_email = (EditText) view.findViewById(R.id.editEmail);
    //bring to center of screen when clicked / focused
    et_email.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ScrollView scrollView = (ScrollView)getView().findViewById(R.id.ScrollViewSendDetails);
            scrollView.smoothScrollTo(0, 500);
        }
    });
    et_email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            ScrollView scrollView = (ScrollView) getView().findViewById(R.id.ScrollViewSendDetails);
            scrollView.smoothScrollTo(0, 500);
        }
    });

问题是滚动仅在第二次点击后才起作用。 在第一次单击edittext时没有任何反应

2 个答案:

答案 0 :(得分:0)

你为什么要听这个?尝试使用onTouch监听器:

et_email.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (MotionEvent.ACTION_DOWN == event.getAction()) {
                ScrollView scrollView = (ScrollView)getView().findViewById(R.id.ScrollViewSendDetails);
                scrollView.smoothScrollTo(0, 500);
            }
            return false;
        }
    });

答案 1 :(得分:0)

也许有点晚,但是对解决方案感兴趣的人: 替换

scrollView.smoothScrollTo(0, 500)

使用

scrollView.postDelayed(() -> scrollView.smoothScrollTo(0, 500), 200);

为我工作。