Android 动态设置View 的问题

Android 动态改变View的方法有暂时学习有两种:
      一、View 的 layout(int l, int t, int r, int b)方法。其中的参数:上下左右的坐标(注:开始以为是距上下左右的距离,其实是坐标,)例:view 往左移20    view.layout( view .getLeft()+50, view .getTop(),  view .getRight()+50,  view .getBottom())。
注:1、 layout(int l, int t, int r, int b) 如果在Acitivity没有创建完成的方法里面调用,没有效果。也就是不能再oncreate(),onresume()等方法里面调用。其实也比较好理解,如果Activity都没有创建好,窗口都没有展示,没有必要去动态改变View,真要如此做的话,直接在layout文件里面去布局好了。
      2、requestLayout( )方法
        当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view重新调用他的onMeasure onLayout来对重新设置自己位置。特别的当view的layoutparameter发生改变,并且它的值还没能应用到view上,这时候适合调用这个方法。
     自己的理解:当View绘制不过来的时候,获取调用layout()没有反应的时候,调用requestLayout(),比如在手势的onscroll方法里面实现View随手指一动,当手指放开的时候,再调用layout()给View重新定位的时候,layout方法没有起作用,这是调用requestLayout()就好了。
      例:触发单击事件改变View的位置,就不能用requestLayout方法,否则layout方法不起作用
    (这里也不是很了解为什么,只是遇到了这两种情况)

二、LayoutParams
     
RelativeLayout.LayoutParams lps = new RelativeLayout.LayoutParams(width, height);
width和height,很容易误解成父的宽和高,其实是需要动态改变布局位置View的width和height.
初始化完成之后我们只是确定View的大小,还是没有改变位置,莫急,接下来怎么动态改变位置。
 1、RelativeLayout  : addRule(verb, anchor) 方法可以在第一个参数这是,左对齐,右对齐,居中等等。
如果要相对左右View的位置来定位怎么办?
lp.leftMargin = 100;相对左边的距离
lp.rightMargin =100;相对右边的距离

AbsoluteLayout.LayoutParams(int width, int height, int x, int y)
LinearLayout.LayoutParams(int width, int height)
 
Android开发技术研交群:182709499
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值