我有一个适合视口的屏幕,因此默认情况下不会显示滚动条。
它有一些TextView元素,EditText和EditText下面的CheckBox。我的目标是在EditText控件处于焦点时滚动并显示CheckBox元素。当EditText处于焦点时,屏幕变得可滚动,因为我为活动设置了“adjustResize”。
现在这里是试图滚动的代码:
mEditTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
final ScrollView mScrollView = (ScrollView) findViewById(R.id.scrollView1);
if (hasFocus){
if(mScrollView != null) {
mScrollView.post(new Runnable() {
@Override
public void run() {
mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
}
}
}
这不会滚动到底部。它只是将焦点带到软键盘上,复选框隐藏在它后面。
有人能告诉我这里有什么问题吗?
PS:我猜这里即使在'adjustResize'之后,Android仍然认为没有滚动范围,因此不会滚动。这可能是这种情况吗?
答案 0 :(得分:0)
您是如何直接调用fullScroll()
而不是post
运行的?我认为这可能是问题所在,因为post()
只是添加了滚动视图的愿望以滚动到消息队列,并且可能在textview具有焦点并显示软键盘时消息队列不起作用。 / p>
答案 1 :(得分:0)
为什么不使用方法scrollTo(x,y)
?我用它,它很完美。只需使用Handler
发送延迟消息,在收到消息时使用此方法。