Android - GridView : Specify Column Span

后端 未结 4 1934
长情又很酷
长情又很酷 2020-12-04 02:38

How can you specify a column span in an android\'s gridview?

I have a gridview that displays 3 images for each row. Sometimes, there are images that have to span 2 r

相关标签:
4条回答
  • 2020-12-04 03:01

    Perhaps this library would work for you. https://github.com/felipecsl/AsymmetricGridView

    0 讨论(0)
  • 2020-12-04 03:09

    If you still want to use a GridView, you can hide one of the cells and extended the width of the one next to it so it spans the entire width. This can be done in your RowAdapter.

    private static LayoutInflater inflater = null;
    
    public class GridRowAdapter extends BaseAdapter
    {
        private String[] imageURLArray;
    
        public GridRowAdapter(String[] imageURLArray)
        {
            this.imageURLArray = imageURLArray;
    
            if(inflater == null)
            {
                inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            }
        }
    
        public int getCount()
        {
            int iCount = Math.max(imageURLArray.length, 1);
    
            //Reduce the count of items expected by the GridView because 1 item will take up 2 cells 
            iCount--;
    
            return iCount;
        }
    
        public Object getItem(int position)
        {
            return position;
        }
    
        public long getItemId(int position)
        {
            return position;
        }
    
        public View getView(int position, View convertView, ViewGroup parent)
        {
            View v = convertView;
    
            try
            {
                if(parent != null)
                {
                    if(position < 2)
                    {
                        v = inflater.inflate(R.layout.grid_item_feature, parent, false);
    
                        ViewGroup.LayoutParams params = v.getLayoutParams();
    
                        if(position == 0)
                        {
                            //Extend height and width of the cell on the left
                            params.height = (itemsGridView.getWidth());
                            params.width = (itemsGridView.getWidth());
    
                            //Write code to show Image or Text
                            String strImage = imageURLArray[position];
    
                        }
                        else
                        {
                            //You must extend the height of this cell too even though you're going to make it disappear
                            params.height = (itemsGridView.getWidth());
    
                            //Hide cell on the right
                            v.setVisibility(View.GONE);
                        }
                    }
                    else
                    {
                        //Reduce the index of the position because we skipped an item 
                        position--;
    
                        v = inflater.inflate(R.layout.grid_item, parent, false);
    
                        //Write code to show Image or Text
                        String strImage = imageURLArray[position];
                    }
                }
    
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
    
            return v;
        }
    
    
    }
    
    0 讨论(0)
  • 2020-12-04 03:09

    This might help you:

    <GridLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:columnCount="3"
        android:rowCount="4"
        android:layout_margin="15dp"
        android:background="#DEB887">
    
        <Button android:text="Button 1" />
        <Button android:text="Button 2" />
        <Button android:text="Button 3" />
        <Button android:text="Button 4" />
        <Button android:text="Column Span 2"
                android:layout_columnSpan="2"
                />
        <Button android:text="Button 6" />
        <Button android:text="Row Span 2"
                android:layout_rowSpan="2"
                />
        <Button android:text="Button 8" />
        <Button android:text="Button 9" />
        <Button android:text="Button 10" />
        <Button android:text="Button 11" />
        <Button android:text="Button 12" />
        <Button android:text="Button 13" />
    
    </GridLayout>
    

    0 讨论(0)
  • 2020-12-04 03:12

    TableLayout and GridLayout support column spanning, but GridView does not.

    0 讨论(0)
提交回复
热议问题