Android:setX()或setTranslationX()不会更改相邻视图的位置

时间:2014-08-24 18:05:29

标签: android layout

我在以下布局中有2个按钮。调整按钮,使左按钮始终保持在右按钮的左侧

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/right_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Right Button" 
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"/>

    <Button 
        android:id="@+id/left_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Left Button"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/right_btn"/>

</RelativeLayout>

enter image description here

但是,在我的活动中,当我改变右按钮的位置时,左按钮位置保持不变。

Button rightBtn = (Button) findViewById(R.id.right_btn);
rightBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        view.setTranslationX(100);
    }
});

enter image description here

我已将setTranslationX(100)setX(500)同时用于右键,但左键位置保持不变。我不确定但是知道setTranslationX只改变按钮的外观,但是对象保持在同一位置。

是否有任何属性可以设置右按钮的位置,以便左按钮位置也会改变,以便它始终位于右按钮的左侧。

2 个答案:

答案 0 :(得分:1)

when I change the position of right button, the left button position remains same.

这是因为您明确地移动了右键x轴而不是整个布局,因此右键仅转换到您指定的位置而不是左键。

解决方案:

当右按钮移动相同的translationx像素时,您也可以翻译左按钮。

答案 1 :(得分:-1)

我认为您似乎遇到的一个问题是您正在使用

view.setTranslationX(100);
在RelativeLayout中,这意味着你像AbsoluteLayout一样使用它(它本身已被弃用)。

尝试重新考虑您的策略。