android:设置布局参数LayoutParams

简介:

在adapter的getView中给view设置布局参数时,使用下面方法:

                LayoutParams params = new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        (int) (metrics.heightPixels * 0.23f + 0.5f));
                convertView.setLayoutParams(params);

程序会出现错误

复制代码
06-08 15:39:43.071: E/AndroidRuntime(610): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.ListView.setupChild(ListView.java:1688)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.ListView.makeAndAddView(ListView.java:1661)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.ListView.fillDown(ListView.java:637)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.ListView.fillFromTop(ListView.java:694)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.ListView.layoutChildren(ListView.java:1516)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.AbsListView.onLayout(AbsListView.java:1112)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.View.layout(View.java:6569)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1108)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.onLayout(LinearLayout.java:920)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.View.layout(View.java:6569)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.View.layout(View.java:6569)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.View.layout(View.java:6569)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.View.layout(View.java:6569)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.ViewRoot.performTraversals(ViewRoot.java:979)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.os.Looper.loop(Looper.java:123)
06-08 15:39:43.071: E/AndroidRuntime(610):     at android.app.ActivityThread.main(ActivityThread.java:4203)
06-08 15:39:43.071: E/AndroidRuntime(610):     at java.lang.reflect.Method.invokeNative(Native Method)
06-08 15:39:43.071: E/AndroidRuntime(610):     at java.lang.reflect.Method.invoke(Method.java:521)
06-08 15:39:43.071: E/AndroidRuntime(610):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-08 15:39:43.071: E/AndroidRuntime(610):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
复制代码

但最后设置如下时:

                ViewGroup.LayoutParams param = convertView.getLayoutParams();
                param.height = (int) (metrics.heightPixels * 0.20f + 0.5f);
                convertView.setLayoutParams(param);

就OK。

http://philn.blog.163.com/blog/static/104014753201101810573338/  里也是一样的情况

 

给LinearLayout设置LayoutParams时用初始的方法则没有问题

 

 

 

本文转自老Zhan博客园博客,原文链接:http://www.cnblogs.com/mybkn/archive/2012/06/08/2542581.html,如需转载请自行联系原作者

相关文章
|
19小时前
|
Android开发
深入了解 Android 中的 FrameLayout 布局
深入了解 Android 中的 FrameLayout 布局
4 0
|
19小时前
|
Android开发 开发者
深入了解 Android 中的 RelativeLayout 布局
深入了解 Android 中的 RelativeLayout 布局
5 0
|
19小时前
|
Android开发 UED 开发者
Android 中的 LinearLayout 布局
Android 中的 LinearLayout 布局
4 0
|
1天前
|
Android开发
Android Studio(2022.3.1)设置阿里云源-新旧版本
Android Studio(2022.3.1)设置阿里云源-新旧版本
8 1
|
7天前
|
XML Java Android开发
Android RecyclerView用代码动态设置item的selector
Android RecyclerView用代码动态设置item的selector
12 0
|
7天前
|
开发工具 Android开发 git
Android自定义View——可以设置最大宽高的FrameLayout
Android自定义View——可以设置最大宽高的FrameLayout
20 0
|
7天前
|
JSON Android开发 数据格式
Android动态添加view设置view大小(宽高)
Android动态添加view设置view大小(宽高)
10 0
|
20天前
|
传感器 Android开发 UED
Android统一设置页面竖屏
【6月更文挑战第4天】
|
22天前
|
Android开发 UED
|
Android开发 iOS开发 C++
Flutter中设置Android的应用名称和图标(android,ios,web)
在前面的几期给大家介绍了flutter的安装以及一些简单的配置,还运行了helloword 那么接下来就带领大家了解如何设置应用名称以及图标
256 0