即使使用“adjustResize”,ScrollTo()也不起作用

时间:2012-10-08 14:29:06

标签: android android-activity android-softkeyboard android-scrollview

我有一个适合视口的屏幕,因此默认情况下不会显示滚动条。

它有一些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仍然认为没有滚动范围,因此不会滚动。这可能是这种情况吗?

2 个答案:

答案 0 :(得分:0)

您是如何直接调用fullScroll()而不是post运行的?我认为这可能是问题所在,因为post()只是添加了滚动视图的愿望以滚动到消息队列,并且可能在textview具有焦点并显示软键盘时消息队列不起作用。 / p>

答案 1 :(得分:0)

为什么不使用方法scrollTo(x,y)?我用它,它很完美。只需使用Handler发送延迟消息,在收到消息时使用此方法。