Android活动,同一个模板的布局注入不同的内容布局
我想知道实现这一目标的最佳实践可能是什么 我正在寻找一个结构相似的Android活动,同一个模板的布局注入不同的内容布局,android,Android,我想知道实现这一目标的最佳实践可能是什么 我正在寻找一个结构相似的布局文件,这样我就可以在应用程序的不同活动中使用它 下面是这样的:activity\u base.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android
布局文件
,这样我就可以在应用程序的不同活动中使用它
下面是这样的:activity\u base.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/content_home"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
有没有办法将布局文件
以编程方式插入到每个活动中的include中
因此,如果我为每个活动content\u settings.xml
,在onCreate
的内部,或者可能是setContentView
将
替换为content\u home.xml
资源文件
有没有办法在每个活动中以编程方式将布局文件插入到该包含中
不,您不能将“include”注入,因为include不是最终布局的一部分(它只是告诉您希望在构建过程中包含其他一些布局XML)
但是,您可以做的是将任何“子布局”(从代码创建或从项目布局文件单独膨胀)添加到“主布局”中的任何现有视图组中,这是一种非常常用的技术,特别是仔细看看像addView()
这样的方法
另一方面,您可以考虑使用LayOutButter的()<代码>通货膨胀()/代码>方法,在这里您还可以指定新的膨胀布局的根视图组,以增加一次膨胀。
你也可以(也可能是更好的方法)考虑分离组件,即使用片段,然后在你的布局中添加片段。
有没有办法在每个活动中以编程方式将布局文件插入到该包含中 不,您不能将“include”注入,因为include不是最终布局的一部分(它只是告诉您希望在构建过程中包含其他一些布局XML) 但是,您可以做的是将任何“子布局”(从代码创建或从项目布局文件单独膨胀)添加到“主布局”中的任何现有视图组中,这是一种非常常用的技术,特别是仔细看看像addView()
这样的方法
另一方面,您可以考虑使用LayOutButter的()<代码>通货膨胀()/代码>方法,在这里您还可以指定新的膨胀布局的根视图组,以增加一次膨胀。
你也可以(也可能是更好的方法)考虑分离组件,即使用片段,然后在你的布局中添加片段。
你不能用<代码>包含< <代码>标签,但是使用 ViewStub是一个不可见的零大小视图,可用于在运行时惰性地膨胀布局资源。当ViewStub可见或被调用时,布局资源会膨胀。然后,ViewStub将其父视图中的自身替换为一个或多个膨胀视图。因此,在调用或之前,ViewStub一直存在于视图层次结构中。膨胀视图将使用ViewStub的布局参数添加到ViewStub的父视图中。类似地,可以使用ViewStub的充气id属性定义/替代充气视图的id在您的场景中,您将在膨胀
视图存根之前使用您不能使用include
标记来执行此操作,但必须使用
ViewStub是一个不可见的零大小视图,可用于在运行时惰性地膨胀布局资源。当ViewStub可见或被调用时,布局资源会膨胀。然后,ViewStub将其父视图中的自身替换为一个或多个膨胀视图。因此,在调用或之前,ViewStub一直存在于视图层次结构中。膨胀视图将使用ViewStub的布局参数添加到ViewStub的父视图中。类似地,可以使用ViewStub的充气id属性定义/替代充气视图的id
在您的场景中,您可以在膨胀视图存根之前使用FrameLayout,而不是
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
您可以使用FrameLayout而不是
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
是的,在你写这篇文章的时候,我刚刚发现了ViewStub,我实现了一个测试,它正是我想要的。感谢您确认这将是一个好方法!是的,在你写这篇文章的时候,我刚刚发现了ViewStub,我实现了一个测试,它正是我想要的。感谢您确认这将是一个好方法!