zoukankan      html  css  js  c++  java
  • 关于setLayoutParams报错

    有两个可能的原因
       1.内部view没有用其parent的LayoutParams
    在继承BaseAdapter的时候,用getView返回View的时候,用代码控制布局,需要用到View.setLayoutParams,但是报错了,报的是类型转换错误,经过研究,发现,这里不能使用ViewGroup.LayoutParams而必须使用对应父View的LayoutParams类型。如:某View被LinearLayout包含,则该View的setLayoutParams参数类型必须是LinearLayout.LayoutParams。原因在于LinearLayout(或其他继承自ViewGroup的layout,如:RelativeLayout)在进行递归布局的时候,LinearLayout会获取子View的LayoutParams,并强制转换成LinearLayout.LayoutParams.
       2.最外层的,不能setLayoutParams
    因为它没有parent。API中说明了:These supply parameters to the parent of this view specifying how it should be arranged. 说明这里设置的参数是提供给parent的。
    public void setLayoutParams (ViewGroup.LayoutParams params)
    Since: API Level 1
    Set the layout parameters associated with this view. These supply parameters to the parent of this view specifying how it should be arranged. There are many subclasses of ViewGroup.LayoutParams, and these correspond to the different subclasses of ViewGroup that are responsible for arranging their children.

  • 相关阅读:
    Unique Paths II
    Search Insert Position
    Remove Duplicates from Sorted Array
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    下载youtube 视频工具
    CloudSTack4.2 查看所有虚拟机API测试
    实现业务系统中的用户权限管理--实现篇
    实现业务系统中的用户权限管理--设计篇
    CloudStack4.2 更新全局参数
  • 原文地址:https://www.cnblogs.com/exmyth/p/4464520.html
Copyright © 2011-2022 走看看