我有一个适用于平板电脑的Android 3.0应用程序。在这个应用程序中,我必须在布局上插入几个ViewsGroup,并且每个ViewsGroup都有几个视图。 以下是活动的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>
答案 0 :(得分:0)
你也应该覆盖onMeasure()。您需要在那里设置setMeasuredDimension(w,h)。 w和h是在添加所有儿童尺寸后获得的条形高度和宽度。