代码动态修改组件的布局属性
Posted LQS_Android
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码动态修改组件的布局属性相关的知识,希望对你有一定的参考价值。
通过代码改变控件的布局
在安卓代码编写过程中,一般都是通过xml的形式来规划界面组件的布局,然后在对应的activity的子类中通过id找到相对应的控件。但出于何种各样的需要,我们需要通过代码来改变控件的位置,可以通过如下的两种方式来改变:
一. 通过view的layout(left,right,top,down)来改变的。可以用view的getLeft,getRight,getTop,getBotton方法来获取Left,Right,Top,Botton的值,然后加上算出的偏移 (event.getRawX())得到改变后的Left,Right,Top,Botton的值.
二. 通过view.setLayoutParam()的方式来设置view在父布局中的布局参数。
ps:整个View的制作过程,分为onMeasure->onLayout->onDraw,在窗口的oncreate方法中,不要用第一种方式,因为view可能都没有绘制出来,就不可能改变位置,只能通过方式二,通过设置从布局参数的方式,让view完全后重新调整布局参数。
比如通过代码修改这个红点的LeftMargin的属性值,现在布局文件中是默认值25dp:
代码中我们修改为40dp,代码如下:
//先找到红点的ImageView组件
ImageView newFriendTip = rootView.findViewById(R.id.red_dot);
//调用getLayoutParams()
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) newFriendTip.getLayoutParams();
//设置左边距
params.leftMargin = DensityUtil.dip2px(40f);
//设置布局参数
newFriendTip.setLayoutParams(params);
把左边距从40dp 修改设置到60dp,效果就会很明显。
以上是关于代码动态修改组件的布局属性的主要内容,如果未能解决你的问题,请参考以下文章