在今天的开发中,遇到了一个之前没有关注过的细节。那就是我用view.getTop()
来获取view距离屏幕顶部高度,结果发现得到的数值和理论不一致。我们来举个例子吧,比如我们有如下的布局:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<LinearLayout android:id="@+id/ll_01" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="vertical" android:background="@android:color/holo_green_light">
<TextView android:id="@+id/tv_01" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="我是第一行文字" /> </LinearLayout>
<LinearLayout android:id="@+id/ll_02" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="vertical" android:background="@android:color/holo_blue_light">
<TextView android:id="@+id/tv_02" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="我是第二行文字" /> </LinearLayout>
</LinearLayout>
|
上面是一个很简单的布局,UI效果图如下:
当我们用tv_01.getTop()
的时候,得到的返回值是0,符合我的想象。但是用tv_02.getTop()
,得到的值也为0。而我原以为tv_02.getTop()
的值为ll_01
的高度,也就是tv_02
距离屏幕顶部的长度。但是结果和我的想象不一致。
后来我才知道原来getTop()
方法返回的是该view距离父容器顶部的距离,所以理所应当tv_02.getTop()
距离ll_02
顶部的距离也为0了,同样的getLeft()
、getBottom()
、getRight()
也是一个道理,以此类推。