Android,单击 edittext 时如何以编程方式滚动滚动视图

Android, How to Scroll Programmatically a scrollview When I Clicked on edittext

当我点击 edittext 时,由于键盘的原因,用户看不到我的 button

所以我想,当用户点击edittext时,scrollview绝对转到上面,效果很流畅。

我的第一个问题 我应该为此使用哪个侦听器? OnClickOnFocusOnTouch 等 ?

我试过这个代码块,但它需要双击才能滚动。第一次点击打开键盘,第二次点击滚动到 scrollview.

我的第二个问题有人知道这个问题吗?感谢您的帮助。

 scrollView = (ScrollView) findViewById(R.id.scrollview);
    et_space.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            scrollView.smoothScrollTo(0, 500);
            return false;
        }
    });
sv.scrollTo(5, 10); 

希望对您有所帮助。

scrollView.post(new Runnable() {
    @Override
    public void run() {
        sv.scrollTo(5, 10);
    }
});

像这样修改您的代码:

et_space.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN: {
                        scrollView.smoothScrollTo(0, 500);
                        return false;
                    }
                }
                return true;
        }
    });

您可以在 EditText.Such 下的同一位置添加一个小部件作为名为 "btn_show_keyboard" 的 ImageView。

然后在你的 btn_show_keyboard.onClick() 方法中执行这个方法。

public void showSoftInput() {
    mEditText.requestFocus();     
    mInputManager.showSoftInput(mEditText, 0);
}

在此软输入模式中设置目标 Activity。

android:windowSoftInputMode="adjustResize"

试试这些,希望对您有所帮助。

试试这个
在 EditText 的 OnClickListener 中使用此代码

scrollview.scrollBy(0,scrollview.getBottom());

谢谢大家的解答,不过我自己解决了问题,

首先我想说你必须使用"OnFocusListener"然后你必须像这样使用Handler;

现在,当我点击我的编辑文本时;键盘打开,滚动视图同时滚动到顶部:)

et_space.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus){
                final Handler handler;
                handler = new Handler();

                final Runnable r = new Runnable() {
                    public void run() {
                        scrollView.smoothScrollTo(0, 500);

                    }
                };
                handler.postDelayed(r, 200);
            }  
          }
        });