Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在运行时动态加载不同视图的最轻量级方法是什么?_Android_Android Layout - Fatal编程技术网

Android 在运行时动态加载不同视图的最轻量级方法是什么?

Android 在运行时动态加载不同视图的最轻量级方法是什么?,android,android-layout,Android,Android Layout,有时我可能需要将不同的视图加载到一个页面,通常我在布局xml文件中创建了一个容器元素,例如 <FrameLayout android:id="@+id/container android:layout_width="match_parent" android:layout_height="wrap_content/> 上面的框架布局可以是线性布局、相对布局或其他形式。在运行时,使用此容器作为动态添加视图的根。它工作得很好,但是这个容器布局增加了视图层次结构的一个级别

有时我可能需要将不同的视图加载到一个页面,通常我在布局xml文件中创建了一个容器元素,例如

<FrameLayout android:id="@+id/container
    android:layout_width="match_parent"
    android:layout_height="wrap_content/>
上面的框架布局可以是线性布局、相对布局或其他形式。在运行时,使用此容器作为动态添加视图的根。它工作得很好,但是这个容器布局增加了视图层次结构的一个级别

xml中有merge元素,但无法以编程方式合并布局

存在ViewStub,仍然无法以编程方式加载不同的布局或视图

我很好奇是否还有更轻量级的方法?

您可以正确使用,但必须确保您的充气调用指定了父级,并且充气布局必须作为第三个参数添加到该父级过程true:

LinearLayout somecontainer = ...
getLayoutInflater().inflate(R.layout.your_merge_layout, somecontainer, true);

然后您将不会获得任何额外的深度,的所有子级将直接添加到某个容器。

使用片段。它们可以很容易地创建、销毁、替换和重用。您想通过编程方式创建视图,如新的ImageViewcontext等吗?@OleksiiKropachov,有时我did@HirakChhatbar,fragment是一种选择,我忘了提到,但可能会有一些小视图,那么我现在不想使用fragment。片段生命周期是一个梅西理解你想要什么并且仍然会推荐片段的过程。事实上这并不是一团糟。一开始我也害怕弗拉格梅恩斯。你需要在碎片上花上几天的时间,你会成功的。你也可以添加带有片段的小视图。请参阅slidenerd的片段教程。如果使用“合并”,布局xml是否可以膨胀到任何类型的容器中?我的意思是,如果容器是LinearLayout、RelativeLayout或任何其他类型。