博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 动态移动控件实现
阅读量:5979 次
发布时间:2019-06-20

本文共 871 字,大约阅读时间需要 2 分钟。

在一些界面上,我们可能需要实现可以移动的按钮等功能,最简单的方式是调用View.layout(),任何布局上的空间都可以支持这种方式移动,上下左右参数值是相对于父viewgroup而言的。

1
2
3
public 
void 
layout(
int 
l, 
int 
t, 
int 
r, 
int 
b)
eg.
button.layout(newLeft, newTop, newRight,newBottom);

但是这种方式有个缺陷就是,当同一个viewgroup中有控件更新(界面刷新)时,移动的控件会复位,即回到一开始的位置,这常常会让人莫名其妙。

另外一种方法是调用MarginLayoutParams.setMargins(),重新设置控件位置参数来实现控件移动效果。这种方式比较适合RelativeLayout、FrameLayout,AbsoluteLayout,对于LinearLayout,因为最后增加的控件总在最下或最右,所以达不到移动效果,TableLayout也不行。

1
2
3
4
5
public 
MarginLayoutParams(MarginLayoutParams source)
eg.
FrameLayout.LayoutParams btnLp = (FrameLayout.LayoutParams)button.getLayoutParams();
btnLp.setMargins(newLeft, newTop, newRight, newBottom);   
button.requestLayout();

Android不建议应用直接调用layout()方法,所以个人建议选择FrameLayout + setMargins()实现控件动态移动效果,还有一个经常搭配使用的方法是bringToFront(),当控件被盖住看不见时相当有用。

     本文转自sarchitect 51CTO博客,原文链接:http://blog.51cto.com/stevex/1266926,如需转载请自行联系原作者
你可能感兴趣的文章
Junit使用GroboUtils进行多线程测试
查看>>
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能...
查看>>
Filter及FilterChain的使用具体解释
查看>>
Python 更新dict
查看>>
卸载Symantec Endpoint Protection, 无需password的卸载方法
查看>>
HTML5的local storage
查看>>
理解class.forName()
查看>>
C#正则表达式Regex类的用法
查看>>
BIP_开发案例01_BI Publisher报表手工提交和控制(案例)
查看>>
MiniGUI ial 移植指南
查看>>
30种编程语言的比较选择问题
查看>>
“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
java 上传2(使用java组件fileupload和uploadify)
查看>>
进程表/文件表/inode/vnode
查看>>
nginx 调优
查看>>
一步一步写算法(之 最大公约数、最小公倍数)
查看>>
Qt类反射机制
查看>>
SOA面向服务化编程架构(dubbo)
查看>>
Android屏幕适配
查看>>