错误日志1:
06-13 10:55:50.410: E/KVLog(1129): Error info:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
06-13 10:55:50.423: E/KVLog(1129): Cause Result:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
06-13 10:55:50.423: E/KVLog(1129): at android.widget.FrameLayout.onLayout(FrameLayout.java:324)
一般设置LayoutParams的时候会报错,是因为LayoutParams有很多种,引用错误就会报错,那么如何快速解决这个错误呢
通过观察发现只要在日志信息中看到 at android.widget.FrameLayout.onLayout,(一般在cause result的下一行)那么onlayout前面显示的那个layout就是你真正要用到的layout,替换掉原来已用的layout,立刻解决问题!!!
错误日志2:
02-27 11:11:03.952: E/AndroidRuntime(3168): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
02-27 11:11:03.952: E/AndroidRuntime(3168): at android.widget.GridView.onMeasure(GridView.java:1028)
02-27 11:11:03.952: E/AndroidRuntime(3168): at android.view.View.measure(View.java:12761)
通过观察发现只要在日志信息中看到错误日志第一行的信息,那么第一行中cannot be cast to 后面的layoutparams就是你要的真正的layoutparams,比如这个 android.widget.FrameLayout$LayoutParams是错误的,而cannot be cast to后面的android.widget.AbsListView$LayoutParams是对的
今天写一个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=new ListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
后正常显示。