Android: разделительная линия для GridLayout

В моем приложении у меня есть Listview, и каждый элемент в Listview имеет GridLayout. И я добавляю пользовательское представление в GridLayout через класс адаптера. Размер представлений, добавленных в GridLayout, не одинаков. Это может варьироваться от одного вида к другому. Мой код в адаптере 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>

Я хочу добавить разделительную строку с максимальной высотой дочерних представлений. И в некоторых случаях gridlayout может иметь более 1 строки, поэтому высота представления разделителя должна меняться в соответствии с максимальной высотой представления в строке GridLayout.

Если я смогу сначала добавить все дочерние представления с такими индексами, как 0, 2, 4 и т. д. А затем рассчитайте максимальную высоту Childviews. После вычисления максимальной высоты я могу добавить представления разделителя с индексом, например 1,3,5,7 и т. д.

Пожалуйста, предоставьте мне правильный способ сделать это. Спасибо.


person Sridhar    schedule 18.09.2012    source источник
comment
минВысота=260; Я делаю это приложение для Android-устройства фиксированного размера.   -  person Sridhar    schedule 18.09.2012
comment
getChildView() для представлений, которые будут добавлены в GridLayout   -  person Sridhar    schedule 18.09.2012
comment
getItemSeparatorView(int) для просмотра строки-разделителя между двумя дочерними представлениями   -  person Sridhar    schedule 18.09.2012
comment
Если я могу сначала добавить все дочерние представления с индексом, например 0,2,4 и т. д. А затем рассчитайте максимальную высоту Childviews. После расчета максимальной высоты я могу добавить представления разделителя с индексом, например 1,3,5,7 и т.д..   -  person Sridhar    schedule 18.09.2012


Ответы (1)


установить вертикальное и горизонтальное расстояние в xml-файле представления сетки

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

    </GridView>

Я надеюсь, что это поможет вам.

person Venkatesh S    schedule 18.09.2012