android - 如何在单个布局程序化中添加多个布局

标签 android layout

我怎样才能添加更多相同的布局而不是一个

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);

如果我这样做它会给我错误然后如果我这样做它只显示一次

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv2);

请帮忙做什么

最佳答案

首先,cast没有意义:

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout, container, false);

移除转换,或将 v 的类型更改为 LinearLayout

如果您能为您的日志猫提供错误消息会更好,但我想您会在此处收到 ClassCastException:

((LinearLayout) v).addView(tv);

也许您的 v 不是 LinearLayout?如果您不确定,请试试这个:

((ViewGroup) v).addView(tv);

编辑

当您展开布局时,将创建 View 的实例。一个 View 不能有超过 1 个父级,所以当你这样做时:

.addView(tv);
.addView(tv);

操作系统认为您正在尝试向 tv 添加另一个父级(这是被禁止的,因此会抛出异常)

关于android - 如何在单个布局程序化中添加多个布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12177211/

相关文章:

android - ExpandableListView - 检测所有组何时折叠

Java-在 Android Studio 中将数据从 Activity 发送到选项卡 fragment

android - 如何更改 Kotlin 属性的名称以匹配 Firebase 数据库上的字段

java - 获取 Assets 文件夹的完整路径

android - 每当我尝试在 XML 布局中使用自定义 View 对象时崩溃

android - 在Android-ndk中,如何在调用dlclose()时调用_fini()?

image - 如何在 LaTeX 中强制两个图形保持在同一页面上?

layout - 使用 <DIV> 标签实现 3 列网站的最佳方式?

Android:无法将滚动设置为此 View ?

iphone - -sizeWithFont 在设备上的功能不同