5

他の多くのビュー (TextViews、ImageViews など) を含む ScrollView があります。ScrollView は画面よりも高くなっています。http 応答に基づいて ScrollView の子を更新する AsyncTask があります。

回避方法がわからない興味深い動作を発見しました。AsyncTask.onPostExecute() の一部として子の可視性を View.INVISIBLE に設定すると、すべて正常に動作します。

ただし、子の可視性を View.GONE に設定すると、onPostExecute() が呼び出されたときに ScrollView が上から下にジャンプします。正確にはどこまで違うようです。ScrollView を再レイアウトすると、何らかの理由で上からスクロールしてしまうと思います。

問題は、この動作を防止または回避する方法はありますか?

PS。回避策として ScrollView.jump(FOCUS_UP) を使用することは理想的ではありません。ユーザーが下にスクロールするつもりだったとしても、強制的に一番上に移動してしまうからです。

編集:実際、私は間違っていました。問題は、子ビューがなくなったとマークされたことではなく、兄弟ビューがなくなったとマークされ、ScrollView のサイズが変更されたことでした。私の ScrollView は、ボタンも含む LinearLayout 内にあります。ボタンが GONE に設定されている場合、ScrollView は使用可能なスペースを占有するようにサイズ変更され、上部から離れてスクロールされます。原因は異なりますが、可能であれば回避策を​​探しています。

4

1 に答える 1