在我为它们设置旋转后,我在调整两个RelativeLayouts方面遇到了麻烦。我想创建一个类似3D的感觉(带烤箱的燃气灶),如下所示:。 基本上我有2个圆角方形,里面有圆形进度条。我用
android:rotationX="20" //top square layout
android:rotationX="-20" //bottom square layout
我遇到两件事情有困难:
我目前已经实现了以下目标,因为您可以看到对齐远非完美:
我尝试在布局上设置布局边距,这适用于我自己的设备,但它对所有设备都没有相同的效果。我目前使用
根据顶部布局的宽度设置底部正方形布局的宽度android:layout_alignLeft="@+id/topLayout"
android:layout_alignRight="@+id/topLayout"
..但是,旋转后似乎没有办法正确对齐布局。有没有办法在XML中以其他方式实现预期的效果?
这是布局xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true">
<RelativeLayout
android:id="@+id/topLayout"
android:rotationX="20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corners"
android:layout_centerHorizontal="true">
<include layout="@layout/single_kookplaat"
android:id="@+id/kookplaat1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"/>
<include layout="@layout/single_kookplaat"
android:id="@+id/kookplaat2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/kookplaat1"/>
<include layout="@layout/single_kookplaat"
android:id="@+id/kookplaat3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_below="@+id/kookplaat2"/>
<include layout="@layout/single_kookplaat"
android:id="@+id/kookplaat4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/kookplaat3"
android:layout_alignLeft="@+id/kookplaat2"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/bottomLayout"
android:rotationX="-20"
android:layout_alignLeft="@+id/topLayout"
android:layout_alignRight="@+id/topLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corners"
android:layout_centerHorizontal="true"
android:layout_below="@+id/topLayout">
<include layout="@layout/single_kookplaat"
android:id="@+id/kookplaat5"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</RelativeLayout>
答案 0 :(得分:0)
问题在于您没有指定旋转的枢轴位置,因此默认情况下会根据视图的中心进行旋转。
由于您希望顶视图的底部与底部视图的顶部对齐,因此您希望分别为每个视图制作这些锚点。
确保在旋转之前为每个视图设置轴心点。为了做到这一点,您需要知道每个视图的高度。如果您知道顶视图的高度,则可以通过XML实现,如果不知道,则在测量发生后您需要通过代码执行此操作。这是一个例子:
topView.setPivotX(topView.getMeasuredWidth() / 2);
topView.setPivotY(topView.getMeasuredHeight());
topView.setRotationX(20);
bottomView.setPivotX(bottomView.getMeasuredWidth() / 2);
bottomView.setPivotY(0);
bottomView.setRotationX(-20);