我是Android开发的新手,我想以编程方式将LinearLayout视图添加到父LinearLayout。在这样做的同时,我希望按顺序看到它们。这是首先添加的视图应该是第一个,第二个添加的视图应该是第二个,依此类推。 我尝试用
做 HolderLayout.addView(view, index)
其中index继续递增,但它对我不起作用。我首先添加的视图显示在列表的第二位。我该怎么办? 我的代码概要是:
int index = 0;
View Row1 = View.inflate(this, R.layout.childView, null);
//populate the appropriate data on the child Row and add it to the holder layout.
holder_layout.addView(Row1 , index);
index++;
Set<Integer>keys = MyMap.keySet();
for(int i : keys){
View row = View.inflate(this,
R.layout.childView, null);
holder_layout.addView(row , index);
index++;
}
我哪里错了。
答案 0 :(得分:0)
这样做:
holder_layout.addView(row , new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
我认为您不必指定索引,因为默认行为是根据需要添加上面的
答案 1 :(得分:0)
如果不出意外,那些会影响此代码的东西会在循环结束时递增Row1
。 {0}会在位置0添加row
,然后循环的第一次迭代也会将第一个row
分配给索引0。
我猜测它会做什么,是在Row1
之前添加index=1
,并相应地更新索引;所以在循环的第二次迭代中,它使用Row1
,将它放在ViewGroup { row[0], row[1], row[2] ... row[n] Row1 }
之前,依此类推,直到最终结果看起来像addChild(View)
。
鉴于您声称要看到的行为,我敢说这是您的代码的真正问题。尽管如上所述,您应该使用index.ts
bubbles: any [][] = [['80%','Meeting'],['20%','Meeting']]
index.html
<div *ngFor="let bubble of bubbles">
<div class="bubble" style="margin-left:{{bubble[0]}};">
</div>
</div>
- 没有索引,依赖于默认行为来在最后添加它。遗憾的是,here并未对此进行说明,但我刚刚对其进行了测试并确认了其工作原理。