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

时间:2016-03-21 11:17:10

标签: android android-edittext scrollview ontouchlistener

当点击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;
        }
    });

5 个答案:

答案 0 :(得分:3)

谢谢大家的所有答案,但我自己解决了我的问题,

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

sv.scrollTo(5, 10); 

希望这会对你有所帮助。

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

答案 3 :(得分:0)

像这样修改你的代码:

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

答案 4 :(得分:0)

您可以在EditText下的同一位置添加小部件。例如名为“btn_show_keyboard”的ImageView。

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

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

在此softinputmode中设置目标活动。

android:windowSoftInputMode="adjustResize"

尝试这些,希望它有所帮助。