在實(shí)際的開發(fā)過程中,常常會用到scrollView嵌套listView來實(shí)現(xiàn)需求游沿。 我們常常會自定義一個(gè)MyListView的自定義控件饰抒,來解決listview再scrollview中高度計(jì)算問題。
自定義的MyListView
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
? ? protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
在MVC下奏候,ScrollView就可以直接嵌套MyListView來顯示內(nèi)容了循集。
在MVVM模式下,就有個(gè)問題了蔗草,當(dāng)你設(shè)置了MyListView的dividerHeight時(shí)咒彤,可能會發(fā)現(xiàn)你的scrollview沒有起到作用,反而MyListView沒有全部顯示咒精,而是可以滾動顯示的镶柱。 這里分析了下造成的原因可能是因?yàn)閙vvm模式下,數(shù)據(jù)更新模叙,界面刷新不及時(shí)造成的歇拆,但是后來發(fā)現(xiàn)再去掉dividerHeight這個(gè)屬性的時(shí)候就可以正常顯示了。