我有一个用XML定义的布局。它还包括:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

我想用其他XML布局文件来膨胀这个RelativeView。我可能会根据情况使用不同的布局。我该怎么做呢?我尝试了不同的变化

RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)

但没有一个运行良好。


当前回答

试试下面的代码:

如果你只是想扩大你的布局:

View View = LayoutInflater.from(context). inflation (r.b ayout.your_xml_layout,null);//扩展xml布局的代码 RelativeLayout item = view.findViewById(R.id.item);

如果你想在容器中膨胀布局(父布局):

LinearLayout父= findViewById(R.id.container);/ /父布局。 View View = LayoutInflater.from(context). inflation (r.b ayout.your_xml_layout,parent,false); RelativeLayout item = view.findViewById(R.id.item);//初始化布局&通过这个你也可以执行任何事件。 parent.addView(查看);//在父布局中添加膨胀布局。

其他回答

您膨胀一个XML资源。参见LayoutInflater文档。

如果你的布局是在mylayout.xml中,你会像这样做:

View view; 
LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.mylayout, null);

RelativeLayout item = (RelativeLayout) view.findViewById(R.id.item);

由于我的特殊情况,我在这个错误上经历了最艰难的一段时间,但最终找到了解决方案。

我的情况:我使用一个单独的视图(XML),它持有一个WebView,然后在一个AlertDialog中打开当我点击一个按钮在我的主活动视图。但不知何故,WebView属于主活动视图(可能是因为我从这里拉资源),所以在我分配给我的AlertDialog(作为一个视图),我必须得到我的WebView的父,把它放入一个ViewGroup,然后删除该ViewGroup上的所有视图。这招奏效了,我的错误也消失了。

// set up Alert Dialog box
AlertDialog.Builder alert = new AlertDialog.Builder(this);
// inflate other xml where WebView is
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService
                (Context.LAYOUT_INFLATER_SERVICE);
View v = layoutInflater.inflate(R.layout.your_webview_layout, null);
final WebView webView = (WebView) v.findViewById(R.id.your_webview_id);

// more code...

.... 稍后,在我加载我的WebView ....

// first, remove the parent of WebView from it's old parent so can be assigned a new one.
ViewGroup vg = (ViewGroup) webView.getParent();
vg.removeAllViews();

// put WebView in Dialog box
alert.setView(webView);
alert.show();

使用Kotlin,您可以使用:

val content = LayoutInflater.from(context).inflate(R.layout.[custom_layout_name], null)

[your_main_layout].apply {
    //..
    addView(content)
}

布局的通货膨胀

View view = null;
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.mylayout, null);
main.addView(view);

我使用了下面的代码片段,它为我工作。

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
linearLayout.addView(child);