在一些界面上,我们可能需要实现可以移动的按钮等功能,最简单的方式是调用View.layout(),任何布局上的空间都可以支持这种方式移动,上下左右参数值是相对于父viewgroup而言的。
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也不行。
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(),当控件被盖住看不见时相当有用。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linearlayout动态布局
, 控件
, 移动
, layout
, 效果
, framelayout
, 方式
, AbsoluteLayout
, Android动态按钮
, Android动态布局
, 帧布局frameLayout
, framelayout布局
, 控件左右移动
动态移动
android 动态移动控件、利用控件实现动态图表、android 动态添加控件、android 动态控件、android 动态生成控件,以便于您获取更多的相关知识。