2

ビューポートに収まる画面があるため、デフォルトではスクロールバーが表示されません。

いくつかの TextView 要素、EditText および EditText の下の CheckBox があります。私の目的は、EditText コントロールがフォーカスされているときに CheckBox 要素をスクロールして表示することです。アクティビティに「adjustResize」を設定しているため、EditText にフォーカスがあると画面がスクロール可能になります。

スクロールしようとしているコードは次のとおりです。

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

How you tried to invoke the fullScroll() directly instead of posting a runnable? I think that this might be the problem, because post() just adds your wish of the scrollview to scroll to the message queue, and probably the message queue is not worked while the textview has the focus and the softkeyboard is shown.

于 2012-10-11T05:29:27.513 に答える
0

メソッドを使用しないのはなぜscrollTo(x,y)ですか。使いました、完璧です。遅延メッセージを送信するだけHandlerで、メッセージを受信したときにこのメソッドを使用します。

于 2012-10-16T04:48:34.770 に答える