作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须创建一个包含框的水平 ScrollView 。每个盒子最多只能包含三个项目。所以我的逻辑是:
在水平 ScrollView 中创建框列表
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:id="@+id/ll_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
创建 box.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ll_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
为项目(在框中)创建 item.xml
在Java中例如,有 7 件元素,所以我需要 3 个箱子。这是我的代码,
public void initList(){
View box = getLayoutInflater().inflate(R.layout.box, null);
LinearLayout ll_box = (LinearLayout)box.findViewById(R.id.ll_box);
int item = 7;
int idx = item/3; //idx is a number of boxes
if (item%3!=0)
idx++;
for (int i=0; i<idx; i++ ){
for(int j=0; j<3; j++){
ll_box.addView(LayoutInflater.from(this).inflate(R.layout.item, null));
}
ll_list.addView(ll_box);
}
}
问题是我在ll_list.addView(ll_box);java.lang.IllegalStateException: 指定的 child 已经有一个 parent 。您必须先对 child 的 parent 调用 removeView()。
如果你不明白这个问题,请问我。我真的需要你的帮助。谢谢。
最佳答案
您必须在每个步骤上创建一个新的框
View
。
像这样:
for (int i=0; i<idx; i++ ){
View box = getLayoutInflater().inflate(R.layout.box, null);
LinearLayout ll_box = (LinearLayout)box.findViewById(R.id.ll_box);
for(int j=0; j<3; j++){
ll_box.addView(LayoutInflater.from(this).inflate(R.layout.item, null));
}
ll_list.addView(box); //here add `box` instead of `ll_box`!!
}
关于android - 如何在其他布局中 inflatedView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839862/
我是一名优秀的程序员,十分优秀!