正如标题所说,我想了解该方法到底在做什么。
第一次我已经仔细检查过android的坐标系是这样的: coordinate system
二级 - 请花一点时间检查我的android studio屏幕,以及方法快速doc。为什么我的观点(点击后)的价值是106? android screen
答案 0 :(得分:5)
坐标系是正确的。
getY()
将返回View
+ Y翻译顶部的值。因此,如果getY()
返回106并且您将翻译y设置为10,则视图的顶部应为96.尝试同时调用getTop()
并检查该值是什么
翻译是应用于View
位置的偏移量。如果布局将View
放在x;y
并且您拨打setTranslationY(10)
,则View
将显示在x;y+10
。这是一种控制布局后View
的定位的方法
奖金提示,而不是记录所有内容,使用调试器
如果你仍然怀疑位置和翻译之间的区别,你可以试试这个,创建一个空活动并设置这个布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.lelloman.dummy.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asd asd"
android:layout_above="@+id/button"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="asd"/>
</RelativeLayout>
然后,您会看到TextView
正好在Button
之上,因为这是RelativeLayout
在给定这些布局参数的情况下定位View
的方式。现在,尝试拨打
findViewById(R.id.button).setTranslationY(100);
您会注意到该按钮将向下移动100px,但TextView
仍将处于旧位置,因为在布局后应用了转换。这是View
特定的内容,View
在其父级中的位置未被考虑
您还可以使用
在xml中设置翻译<Button
android:translationY="100px"
...