编写自定义的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”获取调用。 –