从R.id而不是R.layout膨胀线性布局

时间:2013-03-08 13:29:34

标签: android android-linearlayout viewgroup inflate

我在这里疯了。我有一个片段的布局。在里面我有一个带有id的LinearLayout,例如myLinearLayout。基本上,我想做以下事情:

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

我该怎么做?

3 个答案:

答案 0 :(得分: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); 你需要。

例如

{{1}}

检查拼写错误

答案 1 :(得分:1)

试试这个:

View.inflate(Context, R.id, ViewGroup)

答案 2 :(得分:0)

实际上是黑带,这就是我解决它的方式,但是在将复制的布局添加到新布局时仍然会出错。原因是因为我想复制的布局仍然有父。这是一个完整的sollution(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);