【发布时间】:2020-09-15 14:09:00
【问题描述】:
我正在尝试扩展布局并将其显示给视图组。我该怎么做?
我在资源/布局目录中有我的自定义布局文件target_view_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/targetCardViewId"
...
在activity.xml 文件中我有一个视图:
...
<View
android:id="@+id/targetViewId"
android:layout_width="0dp"
android:layout_height="150dp"
...
内部活动java文件我试过这个:
private View targetView;
targetView = findViewById(R.id.targetViewId);
LayoutInflater layoutInflater = getLayoutInflater();
targetView = layoutInflater.inflate(R.layout.target_view_layout,null);
如何将膨胀的视图附加到 targetView 中?
【问题讨论】:
-
你到底想做什么?你的意思是把
target_view_layout变成targetViewId? -
是的。我正在尝试类似的东西
-
那么
targetView需要是某种ViewGroup- 例如,<FrameLayout>、<LinearLayout>等 - 您可以使用以下内容将布局直接膨胀到其中:@ 987654332@,getLayoutInflater().inflate(R.layout.target_view_layout, targetView);. -
你的意思是我必须在我的 activity.xml 文件中使用
而不是 ? -
它必须是某种
ViewGroup,因为普通的View不能有孩子。有很多不同的ViewGroups 可用,所以选择最适合您的设计的。如果targetView唯一要保存的是target_view_layout的一份副本,那么<FrameLayout>将是合适的。相反,如果您打算垂直堆叠其中几个,例如,<LinearLayout>会更好。