我有一个按-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>
以下是输出。
但是我想用paren留下这个按钮。
答案 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()/2
和getHeight()/2
之间的差异(当然我没有任何边距,我的按钮与其父对齐。如果指定了边距值,则需要加上它。)
要将按钮与其父级左侧对齐,您需要按-diff
进行翻译。
重要提示:为了能够获得视图的高度和宽度,btn_showPopup
在我的情况下,在transformShowPopupButton()
内调用onCreate()
将无效。因此,在onWindowFocusChanged()
内调用它可以解决问题。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
transformShowPopupButton();
}
答案 1 :(得分:0)
您在android:layout_centerVertical="true"
中对Button
说RelativeLayout
。将其更改为
android:layout_centerHorizontal="true"
然后该按钮将在RelativeLayout