我有一个自定义视图,其大小应该是RelativeLayout
,其大小应该是正方形,以及match_parent
的背景图片,它的宽度和高度与它的孩子相同。还有一个按钮应该水平居中并与背景图像的底部对齐。
一切正常,直到我添加一些边距并将我的设备旋转到横向模式。在横向模式下,容器的宽度以某种方式变得比其高度大,如下所示:
自定义视图只是一个从RelativeLayout扩展的简单类,我已按照以下方式覆盖其onMeasure
方法:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int size = Math.min(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec));
int specSize = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
super.onMeasure(specSize, specSize);
measureChild(bgImage, specSize, specSize); // bgImage is the flower image
setMeasuredDimension(size, size);
}
视图的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:background="#eff1f1" android:padding="1dp">
<com.example.MyViewGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#e54eff"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" android:layout_margin="50dp">
<ImageView
android:id="@+id/myPic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/flower"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:id="@+id/button" android:layout_alignBottom="@+id/myPic" android:layout_centerHorizontal="true"/>
</com.example.MyViewGroup>
</RelativeLayout>
有谁可以指出我在这里做错了什么?如果之前已经回答过这个问题,有人可以给我一个链接吗?在搜索之后,我似乎无法找到任何类似的问题。我正在开发API 11并在运行Android 4.04的三星Galaxy Tab 8.9上进行测试。
谢谢!