のようなカスタムリストビューを書く:私が知っているように、ListViewをスクロールすると、なぜonLayoutメソッドがListViewで呼び出されないのですか?
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
Log.d("onLayout","onLayout=====");
}
}
ビューのレイアウト属性が変更された場合、変更(invalide()またはrequestLayoutを())を適用するためには、その親のonLayout方法があるべきその子を呼び出す。
ListViewをスクロールすると、子ビューのレイアウト属性は変更されましたが、onLayoutはまったく呼び出されません。どうして?
このソリューションをチェックしてみてください。0120-919-066_android_when-onlayout-calls –
スクロールでは_layout_、表示されているListViewの部分だけです。したがって、子を再レイアウトする必要はありません。リストビューが占める_size_を変更すると、通常は子のレイアウトを再計算する必要があるため、onLayoutを呼び出す必要があります。 – TripeHound
リストビューをスクロールしても、それは変更されません。ビューの下にビューを追加して、そのビューの表示を切り替えて、 'onLayout'コールを参照してください。 –