0

我有一个适用于平板电脑的 Android 3.0 应用程序。在这个应用程序中,我必须在布局上插入几个 ViewsGroup,每个 ViewsGroup 都有几个视图。下面是 Activity 的 onCreate 代码:

    setContentView(R.layout.main);
    params = new LayoutParams(500, 600);
    ViewGroup v1 = new Bar(this);
    this.addView(v1,params);
    ViewGroup v2 = new Bar(this);
    this.addView(v2,params);

这个 Bar 类扩展了 ViewGroup,并且里面有几个视图。问题是屏幕上只显示了第一个 ViewGroup (v1) 的视图。但我可以看到它将两个 ViewGroup 添加到内容中,因为例如我可以设置第二个的背景,我会看到结果。但是第二个 ViewGroup 内的视图没有被绘制在屏幕上。我尝试更改顺序,首先是 v2,并且 v2 中的所有视图都被绘制,而 v1 中的视图没有。我认为这可能与 Bar 类中的 onLayout 方法有关,我将在下面说明:

@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
    for(int nI = 0; nI < this.getChildCount(); nI++){
        this.getChildAt(nI).layout(arg1, arg2, arg3, arg4);
    }

}

这种方法有问题吗?

顺便说一下,我使用的是 LinearLayout。

<LinearLayout android:background="#C6D7D2" android:orientation="horizontal" android:id="@+id/container" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout>
4

1 回答 1

0

您也应该覆盖 onMeasure() 。您需要在那里设置 setMeasuredDimension(w,h) 。w 和 h 是添加所有子尺寸后得到的栏的高度和宽度。

于 2011-08-25T11:06:29.587 回答