Android View 体系坐标值 受margin 和 padding的影响

  1. 参考博客写在前面:
  2. http://blog.csdn.net/St_Chan/article/details/73801281#reply
  3. http://blog.csdn.net/chdjj/article/details/42293753
  4. http://www.gcssloop.com/customview/CoordinateSystem
  5. http://blog.csdn.net/wxv111/article/details/50901199
看了上面几个大神的博客后,发现结论有点出入,于是自己动手做下测试。

一、View的自身方法:
**
 * 测试View的坐标系
 *
 * 结论:
 * 
 * View中自身方法:
 view.getTop();               //获取子View左上角距父View顶部的距离
 view.getLeft();              //获取子View左上角距父View左侧的距离
 view.getBottom();            //获取子View右下角距父View顶部的距离
 view.getRight();             //获取子View右下角距父View左侧的距离

 view.getTranslationX():计算的是该View在X轴的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。 
 view.getTranslationY():计算的是该View在Y轴的偏移量。初始值为0,向上偏移为负,向下偏移为正。 
 view.getX=view.getTranslationX()+view.getLeft() 相当于该view距离父容器左边缘的距离
 view.getY=view.getTranslationY()+view.getTop()

 前面四个值 和getX 、getY 随
 1、父控件的padding变化,前面四个值 和getX 、getY 变化。而不受父控件的margin值的影响。
 2、自身的margin值变化,前面四个值 和getX 、getY 变化。而不受自身padding值的影响。


(1)、测试代码布局如下:
<com.hlx.view.evanhlxcustomview.view.CustomLinearLayout
    android:id="@+id/c_ll"
    android:layout_width="match_parent"
    android:background="#f5f102"
    android:layout_height="match_parent"
    android:layout_marginTop="20dp">


    <com.hlx.view.evanhlxcustomview.view.CustomView
        android:id="@+id/c_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50px"
        android:src="@mipmap/mayun01" />
</com.hlx.view.evanhlxcustomview.view.CustomLinearLayout>

 (2)、测试自身margin:
 
     测试代码:
 public void addMarginLeft(View view) {
        Log.i("ScrollTestActivity", "addMarginLeft before --> left : " + mCustomView.getLeft() + " getX : " + mCustomView.getX() + " getTranslationX: " + mCustomView.getTranslationX());
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        params.leftMargin = mCustomView.getLeft() + 100;
        mCustomView.setLayoutParams(params);
        mCustom
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值