修改一个LayoutParams,使用这个LayoutParams的所有View都会为此而改变

修改一个LayoutParams,使用这个LayoutParams的所有View都会为此而改变……应该是使用这个布局参数后,所有View都是指向同一个地址(我建的这个布局参数的地址),所有我改变了这个地址中的值后,所有指向此地址的View视图自然就都会改变。

看我的代码

……
//父布局是帧布局
FrameLayout.LayoutParams itemLayoutParams=new FrameLayout.LayoutParams(200,300);
//第一次设置了这个布局参数的topMargin值
itemLayoutParams.topMargin=200;
itemLayoutParams.gravity=Gravity.TOP|Gravity.RIGHT;
//这里的意思是新建了个视图,运用了这个布局参数
textView=getNewTextView(context,"关闭",18f,0xffff0000,itemLayoutParams);
//然后我修改这个布局参数的margin值后在应用给另外一个视图
itemLayoutParams.topMargin=0;
textView =getNewTextView(context,"item4",18f,0xffff0000,itemLayoutParams);
……

结果重叠在了一起,看上去好像两个view的topMargin都是0
在这里插入图片描述

然后我调整了下我的创建视图方法后

 private TextView getNewTextView(Context context, String text, float size, int color, int background, FrameLayout.LayoutParams layoutParams){
        TextView textView=new TextView(context);
        textView.setText(text);
        textView.setTextSize(size);
        textView.setTextColor(color);
        textView.setBackgroundColor(background);
        //用一个新的布局参数把传递过来的布局参数接收,也就是新开辟了一个地址,让这个视图指向新的布局参数地址
        FrameLayout.LayoutParams lP=new FrameLayout.LayoutParams(layoutParams);
        textView.setLayoutParams(lP);
        return textView;
    }

把第二视图的布局参数指向一个新地址后,结果就是我想要的了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值