中易网

android 编程开发中 子view没有设置LayoutParams

答案:1  悬赏:30  
解决时间 2021-01-28 01:56
android 编程开发中 子view没有设置LayoutParams
最佳答案
如果一个View没有set LayoutParams,在该View被添加到一个ViewGroup里时,ViewGroup会为该View创建一个默认的LayoutParams。所以如果题中的view已经存在于一个ViewGroup中,view.getLayoutParams()便会得到ViewGroup为其创建的默认LayoutParams。而这个默认LayoutParams会因ViewGroup而变,这就看是什么ViewGroup了。
看下源码就知道了:
1.ViewGroup.addView

public void addView(View child, int index) {
    if (child == null) {
        throw new IllegalArgumentException("Cannot add a null child view to a ViewGroup");
    }
    LayoutParams params = child.getLayoutParams();
    if (params == null) {
        params = generateDefaultLayoutParams();
        if (params == null) {
            throw new IllegalArgumentException("generateDefaultLayoutParams() cannot return null");
        }
    }
    addView(child, index, params);
}2.FrameLayout.generateDefaultLayoutParams

protected LayoutParams generateDefaultLayoutParams() {
    return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}3.LinearLayout.generateDefaultLayoutParams
protected LayoutParams generateDefaultLayoutParams() {
    if (mOrientation == HORIZONTAL) {
        return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    } else if (mOrientation == VERTICAL) {
        return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    }
    return null;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为不吃零食写一条宣传标语
一迪汽保工具商行怎么去啊,我要去那办事
2015年107期出的几号码
大佬,这个退不出来怎么办,
日版抱枕除了日亚 日拍 还有别的地方买吗
台北101大楼适合白天去还是晚上去
氢气与氦气可以放在一起吗
仓库货损如何而来及如何处理
大家来评评这样的人怎么相处?该怎么回她?
胖成的x腿瘦下来回得去吗?
电力铁塔规格型号是什么?
小花仙仙德瑞拉名字上的符号sm怎么打出来的?
日照香炉生紫烟,遥看云海舞山间。奇山异树云
LOL山岳之容能打野吗
电机控制器 有个预充控制器 可能是是控制开关
推荐资讯
为什么我在陌陌上交不到女友
沧浪之水清兮,可以濯吾缨;沧浪之水浊兮,可
SPSS19.0线性回归中的“个案标签”有什么用?
王牌御史片头曲那个音乐谁有哇!
什么是单件流,单件流跟精益生产有什么关系
科学家受到萤火虫的启示,设计了冷光灯保护人
股票的跌涨是在前一天的基础上还是在原始股上
高精度测量pt1000选用什么芯片
观景楼(惠州龙门县)地址有知道的么?有点事想
需要木屋的CAD施工图
英语中人名只用一个字母代替说明什么问题?比
你是如何成为一个纹身师的
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?