0

私はここで発狂します。フラグメントのレイアウトがあります。内部には、たとえば myLinearLayout など、id を持つ LinearLayout があります。基本的に、私は次のことをしたいです:

LinearLayout newLayout = new LinearLayout(this);
LinearLayout layoutCopy = inflatefrom(R.id.myLinearLayout);
newLayout.addView(layoutCopy);

これどうやってするの?

4

3 に答える 3

1

これを試してください:

View.inflate(Context, R.id, ViewGroup)
于 2013-11-11T21:29:59.010 に答える
1

Layoutその から を膨張させることはできませんが、R.idを膨張させて、Layout返さR.layoutれたビューを使用して必要な を取得することはR.idできます。

例えば

LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.mylayout, null);
LinearLayout layoutCopy = (LinearLayout)view.findViewById(R.id.myLinearLayout);

タイプミスをチェック

于 2013-03-08T13:34:25.480 に答える
0

実際にはブラックベルト、それが私がそれを解決した方法のほとんどですが、コピーしたレイアウトを新しいレイアウトに追加するときにまだエラーが発生しました。その理由は、コピーしたいレイアウトにまだ親があったためです。ここに完全なソリューションがあります(layoutRootはres/layoutにあるxmlレイアウトで、myLinearLayoutはファイルlayoutRoot内のLinearLayoutです。layoutToPlaceCopiedLayoutは、コピーしたレイアウトを配置したいレイアウト内のLinearLayoutです)。

LinearLayout newLayout = (LinearLayout)findViewById(R.id.layoutToPlaceCopiedLayout)
LayoutInflater inflater = LayoutInflater.from(this);
LinearLayout layoutRootCopy = (LinearLayout)inflatefrom(R.layout.layoutRoot);
LinearLayout layoutCopy = (LinearLayout)layoutRootCopy.findViewById(R.id.myLinearLayout);
ViewGroup parent = (ViewGroup)layoutCopy.getParent();
int index = parent.indexOfChild(layoutCopy);
parent.removeView(layoutCopy);
newLayout.addView(layoutCopy, index);
于 2013-03-09T07:07:35.307 に答える