1

我正在使用LayoutInflater将布局添加到自定义 ViewGroup(不是...Layout简单 ViewGroup 的子类)中。

在与它进行了短暂的战斗并实施了这篇文章中所说的所有内容之后,我设法使内容最终出现,但由于某种原因,它没有按照我想要的方式布局。在布局 XML 中有 3 个元素需要水平分布,中心元素“推动”边缘的元素。

这是使布局膨胀的代码:

private LayoutInflater inf = null;
private Paint backpaint = null;
private ViewGroup inflated = null;

private void inflate(Context context) {
    this.setBackgroundColor(0x00000000);
    inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflated = (ViewGroup)inf.inflate(R.layout.application_heading, null);
    this.addView(inflated, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    inflated.measure(r, b);
    inflated.layout(l, t, r, b);
}

起初我只添加了,inflated.layout(l, t, r, b)但它并没有真正起作用。添加. inflated.measure(r,b)_ LinearLayout_WRAP_CONTENT

我试图遍历inflatedViewGroup 的子级并调用.layout(l,t,r,b)它们,但这使它们伸展以填充整个布局,一个在另一个之上。

我一定在这里错过了一些非常小的东西。有谁知道它可能是什么?

4

1 回答 1

2

将包含类切换到子类 aRelativeLayout而不是,ViewGroup一切都变得很美好。

于 2012-02-14T09:38:00.320 回答