0

我创建了一个自定义视图,并将其放在 LinearLayout 上。

问题是我无法完全填充布局的高度,自定义View的大小总是平方,宽度=高度。

这是我的布局:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" 
    android:layout_weight="0">

    <it.inav.graphics.MapView
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"/>

   </LinearLayout>

它似乎工作的唯一方法是使用RelativeLayout并使用两者“拉伸”视图

        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true" 

但是,如果我尝试获取尺寸高度,它会返回与之前相同的长度。

4

1 回答 1

0

问题出在视图的定义中,而不是在 XML 中。

我已经完成了这段代码的复制粘贴:

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int measuredWidth = measure(widthMeasureSpec);
        int measuredHeight = measure(heightMeasureSpec);
        int d = Math.min(measuredWidth, measuredHeight);
        setMeasuredDimension(d, d);
    }

而且,很自然地,它将 View 的大小设置为与 Minor 长度相同的正方形。

这是正确的代码:

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int measuredWidth = measure(widthMeasureSpec);
        int measuredHeight = measure(heightMeasureSpec);
        setMeasuredDimension(measuredWidth, measuredHeight);
    }
于 2012-12-23T18:56:46.067 回答