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膨張したXMLのベースに設定されているかのように、すべてがくっついていましたWRAP_CONTENT

inflatedViewGroupの子を調べて呼び出しようと.layout(l,t,r,b)しましたが、その結果、レイアウト全体が上下に重なるように引き伸ばされました。

ここで本当に小さなものが欠けているに違いありません。誰もがそれが何であるか知っていますか?

4

1 に答える 1

2

を含むクラスをRelativeLayout代わりにサブクラスに切り替えたところViewGroup、すべてが桃色になりました。

于 2012-02-14T09:38:00.320 に答える