2015-07-06 33 views
1

我有一个父线性布局,三个子布局,每个布局的权重为3 我想从服务器获取图像并将这些图像放置在子布局中,并且其工作正常。避免差距并放置图像

但是放置图像时,我会在每次迭代后获取空间。我的意思是我将迭代imagecount并基于提醒我将这些图像放置。

图像看起来像这样(图片三个垂直布局)

| | | 
| | 
| 
| 
| | | 

你可以看到每个图像之间的空白。在第一次迭代中,我得到5张图像(比如说),在第二次迭代中,我想将图像放置在individualidula布局的每个图像下面。

我的意思是这样

| | | 
| | | 
| | | 
| | | 

那么如何避免这种差距,并填补了图像?

这里是我的代码

private View setupView(View parentView) { 
    int itemCount = 1; 
    LinearLayout columnOdd = (LinearLayout) parentView.findViewById(R.id.column_odd); 
    LinearLayout columnEven = (LinearLayout) parentView.findViewById(R.id.column_even); 
    LinearLayout columnCenter = (LinearLayout) parentView.findViewById(R.id.column_center); 

    View itemView = inflater.inflate(R.layout.custom_view, null); 

    if (itemCount % 3 == 0) { 
     columnEven.addView(itemView); 
    } else if (itemCount % 2 == 0){ 
     columnOdd.addView(itemView); 
    } 
    else if (itemCount % 1 == 0) { 
     columnCenter.addView(itemView); 
    } 
    itemCount++; 
} 

return parentView; 

这是我如何膨胀在我的布局的观点:

View v = inflater.inflate(R.layout.items, null);     
v = setupView(v); 

if (v != null) { 
    mCurrentItem++; 
    mViews.parentLinearLayout.addView(v); 
} 
+0

多少在最大图像? – EagleEye

+3

为什么你不使用gridview? –

+0

我正在从服务器获取大量图像,但是我想将它们放置在每个布局之下。所以它看起来像一排三个图像,我也显示了上面的图片。谢谢 – Randroid

回答

1

如果有一个是一个巨大的图像的数量,那么你应该使用gridview或您可能会遇到内存不足异常。使用带有numColumns一个GridView为3

1

试试这个代码:

int count=imageArray.length(); 
    for(int i=0;i<count;){ 
     setupView(i,count,parentView); 
     i=i+3; 
    } 

    private View setupView(int currentPos,int totalCount,View parentView) { 
     int itemCount = currentPos; 
     LinearLayout columnOdd = (LinearLayout) parentView.findViewById(R.id.column_odd); 
     LinearLayout columnEven = (LinearLayout) parentView.findViewById(R.id.column_even); 
     LinearLayout columnCenter = (LinearLayout) parentView.findViewById(R.id.column_center); 
     View itemView = inflater.inflate(R.layout.custom_view, null); 
     columnEven.addView(itemView); 
     itemCount++; 
     if(itemCount<totalCount){ 
      itemView = inflater.inflate(R.layout.custom_view, null); 
      columnOdd.addView(itemView); 
     } 
     itemCount++; 
     if(itemCount<totalCount){ 
      itemView = inflater.inflate(R.layout.custom_view, null); 
      columnCenter.addView(itemView); 
     } 
    }