Android:GridLayout 的分隔线

标签 android android-layout android-gridlayout

在我的应用程序中,我有一个 Listview,Listview 中的每个项目都有一个 GridLayout。 我通过适配器类向 GridLayout 添加自定义 View 。添加到 GridLayout 的 View 的大小不相同。它可能因一种观点而异。 我在 getView() 适配器中的代码是,

for (int i = 0,j=0; i < (data.get(position).getItems().size() * 2) && j< (data.get(position).getItems().size()); i=i+2,j++) {
            View childView=getChildView(position, j);
            childView.setBackgroundColor(Color.CYAN);
            Log.i("ChildView Height",childView.getLayoutParams().height+" length");
            holder.order_row.addView(childView, i);
            holder.order_row.addView(getItemSeparatorView(minHeight),i+1);
        }

private View getChildView(int pos, int i) {

        //Log.i("position in child", pos + "");

        View child = inflater.inflate(R.layout.order_item, null);
        InnerViewHolder inholder = new InnerViewHolder();
        inholder.name = (TextView) child.findViewById(R.id.order_name);
        inholder.items = (ListView) child.findViewById(R.id.order_list);

        inholder.name.setText(data.get(pos).getItems().get(i).getItemName()+":");
        inholder.name.setTextColor(itemColor);
        inholder.items.setAdapter(new OrderItemOptionAdapter(context, data
                .get(pos).getItems().get(i).getOptions(),itemColor));
        int size = data.get(pos).getItems().get(i).getOptions().size();
        Log.i("childview", "called" + i+ "size is "+size);
        if (size > 7) {
            child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
                    260, 80 + (size * 20))));

        } else if(size <=7 && size>=4 ){
            child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
                    260, 450)));
        } else {
            child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(
                    260, 250)));
        }

        return child;
    }
    public View getItemSeparatorView(int h){
        //Log.i("seperator","called and height is "+h);
        View sep = inflater.inflate(R.layout.item_seperator, null);
        sep.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(2,h)));
        return sep;
    }

我的 xml 代码是。

<GridLayout
        android:id="@+id/order_row"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:columnCount="6"
        android:orientation="horizontal"
>    </GridLayout>

我想添加一个具有 subview 最大高度的分隔线。 在某些情况下,gridlayout 可能有多于 1 行,因此分隔 View 的高度应根据 GridLayout 一行中 View 的最大高度而变化。

如果我可以先添加索引为 0、2、4 等的所有 subview 。然后计算 subview 的最大高度。计算出最大高度后,我可以添加索引为 1、3、5、7 等的分隔 View 。

请提供正确的方法。 谢谢。

最佳答案

在 GridView xml文件中设置Verticalspacing和Horizo​​ntalspacing

  <GridView
        android:horizontalSpacing="10dp"
        android:horizontalSpacing="10dp" >

    </GridView>

希望对您有所帮助。

关于Android:GridLayout 的分隔线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12473709/

相关文章:

java - 使用 Java 而不是 xml 时多行文本中的不同行为

android - 在 CircleImageView 中缩放不同大小的图像的问题

android - 在 Android 中使用另一组资源(不是运行时,而是编译时)

android - 在 1 行和多列中显示带有水平滚动条的 GridView 或画廊的图像和文本

Android GridLayout 等列宽

android - 巴士座位预订管理

android - Gradle 同步失败 - 将 Android Studio 更新到 3.2 后

android - 在 android 的不同 xml 文件中使用相同的 id 名称

android - 如何取消此重复警报?

android - 如何修复日历的 Intent 而不是将其添加为全天事件