代码动态修改组件的布局属性

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,效果就会很明显。

 

 

以上是关于代码动态修改组件的布局属性的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript动态修改html组件form的action属性

有没有办法使用相同的布局动态创建片段并向它们显示数据?

将自定义组件小部件动态添加到 Android 中的布局中

Android片段布局完成膨胀

安卓如何使用WebView组件加载HTML代码

重新计算动态布局属性