自定义视图onMeasure中的奇怪问题

时间:2014-05-19 07:42:43

标签: java android relativelayout layoutparams onmeasure

我有一个自定义视图,其大小应该是RelativeLayout,其大小应该是正方形,以及match_parent的背景图片,它的宽度和高度与它的孩子相同。还有一个按钮应该水平居中并与背景图像的底部对齐。

Imgur

一切正常,直到我添加一些边距并将我的设备旋转到横向模式。在横向模式下,容器的宽度以某种方式变得比其高度大,如下所示:

Imgur

自定义视图只是一个从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上进行测试。

谢谢!

0 个答案:

没有答案