安卓GridView的行高最大值如何设置?

4

我有一个简单的GridView,其元素具有不同的高度。例如,一行中有一个小元素和一个较大的元素,下一行将对齐较小的元素,并且较大的元素的一部分位于第二行下面。如何设置GridView每行的高度为该行中最大元素的高度?

我的GridView:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
                android:id="@+id/new_small_list"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:numColumns="2"
                android:verticalSpacing="3dp"
                android:horizontalSpacing="3dp"
                android:stretchMode="columnWidth"
                android:gravity="center"
                android:cacheColorHint="@android:color/transparent"
            />

1
这是您的答案。https://dev59.com/oGsz5IYBdhLWcg3w9ssQ#7568226 - Mert
将网格项的高度和宽度设置为静态。如果元素具有不同的高度,则会获取提供给它的静态高度。 - AkashG
1个回答

4

如果您想要设置单元格的高度,在GridViewAdapter中编写时,例如:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

        if(convertView == null){

            LayoutInflater cellLayout = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);             
            convertView = cellLayout.inflate(R.layout.gridcell_layout, null);
        }

        TextView cell_title = (TextView) convertView.findViewById(R.id.gridview_cell_text);         
        ImageView cell_icon = (ImageView) convertView.findViewById(R.id.griview_cell_image);
        ....

只需替换此行:

convertView = cellLayout.inflate(R.layout.gridcell_layout, null);

用这个:
convertView = cellLayout.inflate(R.layout.gridcell_layout, gridView, false);

通过这种方式,在“inflate”中设置父引用,单元格的宽度和高度将被设置!在此处您可以找到原因:

按钮边距的布局问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接