2

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

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

4

2 回答 2

0

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

于 2012-10-16T04:48:34.770 回答
0

您如何尝试fullScroll()直接调用而不是post运行可运行对象?我认为这可能是问题所在,因为post()只需添加您希望滚动视图滚动到消息队列的愿望,并且当文本视图具有焦点并显示软键盘时,消息队列可能不起作用。

于 2012-10-11T05:29:27.513 回答