以特定顺序将子(LinearLayout)视图添加到android中的LinearLayout

时间:2014-08-02 07:16:16

标签: android android-linearlayout

我是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++;

   }

我哪里错了。

2 个答案:

答案 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并未对此进行说明,但我刚刚对其进行了测试并确认了其工作原理。