android View的GONE或者布局重绘导致控件回到原点

android 控件设置GONE,其实父布局就已经重绘了,在开发一个功能时,遇到一个问题,就是布局重绘(GONE,QQ消息状态栏弹框等)导致某个控制设置的坐标无效而回到原点,先上代码

private void updateVirtualCursorXY(int l, int t, int r, int b) {
     try {
//	pc_control_cursor.layout(l, t, r, b);    
//      pc_control_cursor.postInvalidate();
        moveView(pc_control_cursor, l, t,r, b, pc_control_cursor.getWidth(), pc_control_cursor.getHeight());
     } catch (Exception e) {
	  e.printStackTrace();
     }
}
	
private void moveView(View v, int left, int top, int right, int bottom, int width, int height) {
//	RelativeLayout.LayoutParams params = null;
//	params = new RelativeLayout.LayoutParams(width, height);
	RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) v.getLayoutParams();
	params.width = (int)(CURSOR_WIDTH * Utils.getScreenDensity());
	params.height = (int)(CURSOR_HEIGHT * Utils.getScreenDensity());
	params.leftMargin = left;
	params.topMargin = top;
	params.rightMargin = viewWidth - right;
	params.bottomMargin = viewHeight - bottom;
	v.setLayoutParams(params);
}

函数updateVirtualCursorXY可以看到是为了更新控件的坐标,最初用的是被屏蔽的两行代码用来更新控件坐标,后来发现只要布局重绘就会导致控件回到原点,网上查了资料发现当view的位置发生改变时,也要相应改变其layoutparams,否则父布局重绘时,由于view的layoutparams没发生改变导致重绘的时候会回到原点,所以只要改变其params就好了

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值