关于ListView head 动态设置高度
2014-09-23 00:00
225 查看
摘要: ListView Head 动态高度异常处理!
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams can
ListView,用的是指定义的布局,这个ListView的headerView也是自定义布局,运行报错:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
如果你要将一个view添加到另一个布局中,你必须设定该View的布局参数为其父类所使用的布局参数类型。即要在代码中动态改变某组件的高度,其布局参数类型应该是其父类所使用的布局参数类型。
参考我的代码,因为ListView的 headerView 的 LayoutParams 参数没有改为和ListView一致;
改为
ListView.LayoutParams LP=newListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
后正常显示。
//动态获取 该视图的宽高 并回写 head高度
ImageView defalt = (ImageView) mHead.findViewById(R.id.defalt_head);
ViewTreeObserver defaltObs = defalt.getViewTreeObserver();
defaltObs.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressLint("NewApi") @Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
defalt.getViewTreeObserver().removeOnGlobalLayoutListener(this);;
mHead.setLayoutParams(new ListView.LayoutParams(defalt.getWidth(),defalt.getHeight()));
}
});
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams can
ListView,用的是指定义的布局,这个ListView的headerView也是自定义布局,运行报错:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
如果你要将一个view添加到另一个布局中,你必须设定该View的布局参数为其父类所使用的布局参数类型。即要在代码中动态改变某组件的高度,其布局参数类型应该是其父类所使用的布局参数类型。
参考我的代码,因为ListView的 headerView 的 LayoutParams 参数没有改为和ListView一致;
改为
ListView.LayoutParams LP=newListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
后正常显示。
//动态获取 该视图的宽高 并回写 head高度
ImageView defalt = (ImageView) mHead.findViewById(R.id.defalt_head);
ViewTreeObserver defaltObs = defalt.getViewTreeObserver();
defaltObs.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressLint("NewApi") @Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
defalt.getViewTreeObserver().removeOnGlobalLayoutListener(this);;
mHead.setLayoutParams(new ListView.LayoutParams(defalt.getWidth(),defalt.getHeight()));
}
});
相关文章推荐
- android 多个listView的向下滚动设置 listView动态设置高度代码
- scrollview嵌套listview时 动态设置listview高度
- 动态设置ScrollView里面的ListView的高度
- 动态设置listview的高度
- android 关于listview item设置高度的问题解决方法
- Item高度固定下动态设置ListView的高度
- Android笔记 四种方案解决ScrollView嵌套ListView问题之动态设置ListView高度代码整理
- 动态设置ListView的高度
- ScrollView嵌套listview 时根据内容动态设置listview高度
- android 关于如何设置ListView中item高度问题的解决方案
- ListView+ListView 动态设置Item高度
- android给ListView动态设置高度
- 关于listview单元高度&设置列(包含列宽设置)和添加数据的方法
- Android 一个Activity里面2个ListView垂直排列,动态设置ListView高度
- android 动态设置ListView 高度
- ListView中根据手机屏幕高度动态设置只显示一屏幕的item个数
- listView 动态设置高度
- 通过动态设置ListView高度来解决ScollView与ListView互相嵌套的问题
- ScorllView嵌套ListView时,动态设置ListView高度时的问题.
- 动态设置ListView可以显示的高度