を使用し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
。
inflated
ViewGroupの子を調べて呼び出しようと.layout(l,t,r,b)
しましたが、その結果、レイアウト全体が上下に重なるように引き伸ばされました。
ここで本当に小さなものが欠けているに違いありません。誰もがそれが何であるか知っていますか?