如何在 Android 中以编程方式包含布局?

我正在寻找一种以编程方式包含布局的方法,而不是像我的示例中那样使用 XML 标记 include:

  <include layout="@layout/message"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.75"/>

需要改变这个参数“ Layout =”@layout/message”编程,请。

知道怎么做吗?

57667 次浏览

使用 ViewStub代替 include:

<ViewStub
android:id="@+id/layout_stub"
android:inflatedId="@+id/message_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.75" />

然后在代码中,获取存根的引用,设置其布局资源,并将其充气:

ViewStub stub = (ViewStub) findViewById(R.id.layout_stub);
stub.setLayoutResource(R.layout.whatever_layout_you_want);
View inflated = stub.inflate();
ViewStub stub = (ViewStub) findViewById(R.id.text_post);
stub.setLayoutResource(R.layout.profile_header);
View inflated = stub.inflate();

在 Mono 中,Droid/Xamarin 对我很有用:

ViewStub stub = FindViewById<ViewStub>(Resource.Id.layout_stub);
stub.LayoutResource = Resource.Layout.whatever_layout_you_want;
stub.Inflate();

ViewStub Kotlin 实现

在你的 OnCreate函数中:

val viewStub: ViewStub? = binding?.viewStub
viewStub?.layoutResource = R.layout.your_layout


if (viewStub?.parent != null) {
viewStub.inflate()
}

不要忘记对任何询问作出评论