根据视图数量对布局中的视图进行排序

时间:2017-02-24 10:28:43

标签: android android-layout view android-linearlayout

我在一件事情上挣扎。让我们说我有线性布局,设置高度和宽度是match_parent。我将有一定数量的视图1到6,我不知道在运行时我将从服务器收到多少。问题是,我如何在布局中对它们进行排序,以便根据存在的视图数量来扩展它们的宽度?如果有超过3个视图,我需要将它们分成两行。this is how it should look like

我在考虑使用布局权重,但是不能考虑可以将它们放到两行的解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您应该在有根的LinearLayout中使用listview并在其他xml布局中设计单个列表项,为单个列表项创建自定义适配器并将适配器设置为列表视图。 this answer will help you how to create custome adapter

答案 1 :(得分:0)

您必须动态地将视图添加到线性布局。

首先在xml中创建容器布局。

<LinearLayout
     android:id="@+id/containerLayout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
/>

然后检查,

 if(list.size()<=3)
    {  
         Then assign weight to container. i.e weight=list.size

          for(int i=0;i<size;i++)
          {
            TextView textview = new TextView(this);
            textview.setText(brandName);
            textview.setWeight(1f);

            container.addView(textview);
          }
    }
    else
   {

         int totalRows= (list.size/3)+(list.size%3);
         int count=0;

        for(int i=0;i<totalRows;i++)
        {
               LinearLayout newLL = new LinearLayout(mContext);
                newLL.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                newLL.setOrientation(LinearLayout.HORIZONTAL);

                for(int j=count;j<count+3;j++)
                {
                    count++;
                    TextView textview = new TextView(this);
                    textview.setText(brandName);
                    newLL.addView(textview);
                }
                container.addView(newLL);
        }

   }

你必须做这样的事情。这不是真正的代码。