理解View.setTranslationY()[/ X()]

时间:2017-06-08 11:24:22

标签: android user-interface

正如标题所说,我想了解该方法到底在做什么。

第一次我已经仔细检查过android的坐标系是这样的: coordinate system

二级 - 请花一点时间检查我的android studio屏幕,以及方法快速doc。为什么我的观点(点击后)的价值是106? android screen

1 个答案:

答案 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"
    ...