旋转的垂直按钮不与父左对齐

时间:2013-06-26 07:15:35

标签: android android-layout

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

Folowing是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>

以下是输出。 enter image description here

但是我想用paren留下这个按钮。

2 个答案:

答案 0 :(得分: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()内调用onCreate()将无效。因此,在onWindowFocusChanged()内调用它可以解决问题。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    transformShowPopupButton();
}

答案 1 :(得分:0)

您在android:layout_centerVertical="true"中对ButtonRelativeLayout。将其更改为

android:layout_centerHorizontal="true"

然后该按钮将在RelativeLayout

的左侧对齐