編寫自定義的ListView,如:滾動ListView時,爲什麼在ListView中不調用onLayout方法?
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根本不會調用。爲什麼?
檢查此解決方案http://stackoverflow.com/questions/23471906/android-when-onlayout-calls –
大概是因爲滾動不會改變_layout_,只有ListView的部分是可見的,所以你不(不應該)需要重新佈局孩子。更改列表視圖佔用的_size_將調用onLayout,因爲此_would_通常需要重新計算孩子的佈局。 – TripeHound
請注意滾動列表視圖不會改變它的綁定。嘗試在視圖下添加視圖並切換該視圖的可見性以查看「onLayout」獲取調用。 –