1

我有一个以-90 旋转的按钮。旋转按钮未与父级左对齐。

以下是 XML

<RelativeLayout
        android:id="@+id/rl_showChapters"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:background="#000000"
        android:visibility="gone" >

        <Button
            android:id="@+id/btn_show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:rotation="-90"
            android:text=" Show Chapters " />

    </RelativeLayout>

以下是输出。 在此处输入图像描述

但我想把这个按钮留在左边。

4

2 回答 2

3

我知道这是一个老问题,但我想在这里放弃一个答案以供将来参考。

我遇到了完全相同的问题,只是我想将我的按钮对齐到其父级的右侧。这里的问题是,当旋转视图时,选择枢轴作为其中心,除非另有说明(我不知道该怎么做)。我找不到任何属性来为我完成这项工作;所以我实现了以下方法:

private void transformShowPopupButton() {
    int w = btn_showPopup.getWidth(), h = btn_showPopup.getHeight();
    int diff = w/2-h/2;
    btn_showPopup.setRotation(270);
    btn_showPopup.setTranslationX(diff);
}

基本上,此方法移动按钮,直到它与其父对齐。移动量等于和之间的差值getWidth()/2getHeight()/2当然,我没有任何边距,并且按钮与其父级对齐。如果您指定了边距值,则还需要将其相加。)

要将按钮对齐到其父级的左侧,您需要将其翻译为-diff.

重要提示:为了能够获得视图的高度和宽度,btn_showPopup在我的情况下,调用transformShowPopupButton()inside是onCreate()行不通的。所以在里面调用它就onWindowFocusChanged()可以了。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    transformShowPopupButton();
}
于 2014-09-27T22:44:59.477 回答
0

你说android:layout_centerVertical="true"的是Buttonin RelativeLayout。将其更改为

android:layout_centerHorizontal="true"

然后按钮将在左侧对齐RelativeLayout

于 2013-06-26T07:32:29.210 回答