Android,单击 edittext 时如何以编程方式滚动滚动视图
Android, How to Scroll Programmatically a scrollview When I Clicked on edittext
当我点击 edittext
时,由于键盘的原因,用户看不到我的 button
。
所以我想,当用户点击edittext
时,scrollview
绝对转到上面,效果很流畅。
我的第一个问题 我应该为此使用哪个侦听器? OnClick
、OnFocus
、OnTouch
等 ?
我试过这个代码块,但它需要双击才能滚动。第一次点击打开键盘,第二次点击滚动到 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);
}
}
});
当我点击 edittext
时,由于键盘的原因,用户看不到我的 button
。
所以我想,当用户点击edittext
时,scrollview
绝对转到上面,效果很流畅。
我的第一个问题 我应该为此使用哪个侦听器? OnClick
、OnFocus
、OnTouch
等 ?
我试过这个代码块,但它需要双击才能滚动。第一次点击打开键盘,第二次点击滚动到 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);
}
}
});