我创建了一个自定义视图,并尝试实现onMeasure()以在所有情况下都能正常工作。我目前想知道当我的视图放置在如下的线性布局中时作为width / heightMeasurementSpec传递的参数:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/someId"></MyView>
</LinearLayout>
在这种情况下做完
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int height = MeasureSpec.getSize(heightMeasureSpec);
int heightmode = MeasureSpec.getMode(heightMeasureSpec);
//...
}
我的身高= 271(在480x320的屏幕上)和身高模式= AT_MOST这似乎有意义。
但是当我在视图之后添加一些像这样的TextView时:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/someId"></MyView>
<TextView android:text="1" android:layout_width="fill_parent"
android:layout_height="wrap_content"></TextView>
<TextView android:text="2" android:layout_width="fill_parent"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
我仍然得到相同的高度/高度模式值(onMeasure实际上被调用两次,但使用相同的参数)。我认为,由于TextViews占用了一些空间,MyView应该有更少的空间? (哪个会好的,但我需要知道我可以占用多少空间......)
有什么想法吗?非常感谢!
答案 0 :(得分:1)
在自定义视图后添加TextViews ,因此它们的高度不会影响自定义视图的高度。
答案 1 :(得分:0)
我想出了如何实现我想要的目标:
1。)View不负责确定是否应填充所有可用空间。这是在布局中完成的。
2。)我可以通过像
这样的布局为视图提供所有剩余的垂直空间 <MyView
android:layout_width="fill_parent"
android:layout_height="0px" android:layout_weight="1"></MyView>
3。)onMeasure()应该通过考虑模式(getMode(widthMeasurementSpec))来设置测量的维度。