放置其他视图元素时,自定义视图测量不正确

时间:2016-07-25 16:38:31

标签: android android-custom-view

我创建了一个自定义视图,我想在RelativeLayout中放置一个按钮。我遇到的问题是,如果我使用android:layout_below =" @ id / customView"在自定义视图下放置一个按钮,则customView占据全高,所以没有空间在屏幕上放置按钮,它只放在屏幕的下边框下方,因此不可见。我应该已经计算了上次调用customView的onMeasure()方法时收到的大小,即应该考虑所有其他视图大小,但似乎在这种情况下按钮的高度不是。

这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/darkBlueBackground"
tools:context="com.example.TimePickerActivity">

<com.example.TimePicker
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingRight="20dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:id="@+id/picker"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/picker"
    android:layout_weight="1"
    android:id="@+id/okButton"
    android:text="OK"/>

这是由onMeasure()测量的最终尺寸:

07-26 00:24:39.551 19930-19930/com.example D/TAG: width = 720 height = 1230

同时如果我把按钮放在customView上面,一切看起来都很好,onMeasure()会收到customView的正确高度,所以有一些按钮空间。

此案例的布局:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:id="@+id/okButton"
    android:text="OK"/>

<com.example.TimePicker
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/okButton"
    android:paddingLeft="5dp"
    android:paddingRight="20dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:id="@+id/picker"/>

onMeasure的最终尺寸不同: 07-26 00:24:39.551 19930-19930/com.example D/TAG: width = 720 height = 1134

为什么自定义视图(TimePicker)在一个案例中正确测量而在另一个案例中没有测量?

1 个答案:

答案 0 :(得分:1)

尝试在android:layout_height=wrap_content"视图中设置com.example.TimePicker。将高度设置为match_parent会导致视图填充父级的高度,而不会留下按钮的空间。