关于Android下常用布局的LayoutParams的用法

举报
ShaderJoy 发表于 2021/12/30 00:37:20 2021/12/30
【摘要】 最近为各个布局下的水平垂直居中搞烦了。因为是动态构建的布局,一些在XML里面很好写的居中,动态JAVA代码里不知道么样实现,今天终于再了解了其中的意思。   首先第一点也是最先应该了解的:   setLayoutParams(new LayoutParams(LayoutParams.FILL_PAR...

最近为各个布局下的水平垂直居中搞烦了。因为是动态构建的布局,一些在XML里面很好写的居中,动态JAVA代码里不知道么样实现,今天终于再了解了其中的意思。

 

首先第一点也是最先应该了解的:

 

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
 

这一句话其实是子对父的,也就是父布局下的子控件要设置这句话,并且由于布局很多,也不同,虽然都继承至ViewGroup但是各个布局的属性和方法有很大的不同。很显然上面这句应该这样写才算准确

 


  
  1. setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
  2. TableRow.LayoutParams.FILL_PARENT));

这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。下面分别说下两个常用到布局:

 

1. FrameLayout下动态设置子控件居中

 

 在XML文件中只用设置这个属性:



动态用JAVA代码要这样实现:

 


  
  1. FrameLayout.LayoutParams btnLytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);
  2. btnLytp.gravity = Gravity.CENTER;
  3. btnMemo.setLayoutParams(btnLytp);

2. RelativeLayout下动态设置子控件居中

在XML下配置RelativeLayout非常简单,设置对应属性就好。

JAVA代码动态实现则用到这个方法了:

 



用法:


  
  1. RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
  2. lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
  3. lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
  4. btn1.setLayoutParams(lp);


文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8522745

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。