2
在我的应用程序中,我有一个ListView,ListView中的每个项目都有一个GridLayout。 我通过适配器类向GridLayout添加一个自定义视图。添加到GridLayout的视图的大小不一样。它可能因视图而异。 我在getView()适配器代码,Android:GridLayout的分隔线
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>
我想添加一个分隔线,它具有childViews的最大高度。 而且在某些情况下,网格布局可能有多于一行,因此分隔视图的高度应根据GridLayout一行中视图的最大高度进行更改。
如果我可以首先添加所有的子视图,像索引0,2,4等。然后计算Childviews的最大高度。在计算最大高度后,我可以添加索引分隔视图像1,3,5,7etc ..
请为我提供正确的方法来做到这一点。 谢谢。
minHeight = 260;我为固定尺寸的Android设备做这个应用程序。 – Sridhar
getChildView()用于在GridLayout中添加视图 – Sridhar
getItemSeparatorView(int)用于两个子视图之间的分隔线视图 – Sridhar