0

ScrollView を拡張するクラス内で LinearLayout を使用しています。LinearLayout には、カスタム クラスのオーバーライドされた onScrollChanged() メソッド内で高さが変化する子の数があります。スクロールがゆっくり実行される場合、すべてが完璧に機能します。フリングの動きで高速スクロールすると、子供の身長が縮みます。オーバーライドされた onScrollChange() メソッドでログ出力を作成しましたが、レイアウト パラメータが適用されていないことが示されています。

Log.v("myapp", "getHeight: "+mChildHolder.getChildAt(i).getHeight());
Log.v("myapp", "getLayoutParams.height "+mChildHolder.getChildAt(i).getLayoutParams().height);

出力:

getHeight: 45
getLayoutParams.height 90

フリング後にスクロールビューで LayoutParams を適用できない理由はありますか?

4

1 に答える 1

0

解決策が見つかったようです。onScrollChanged() を呼び出すたびに requestLayout() を呼び出すことになりました。パフォーマンスの面で効率的かどうかはわかりませんが、期待どおりに動作するようになりました。

于 2012-11-30T09:51:12.550 に答える