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
Perhaps this library would work for you. https://github.com/felipecsl/AsymmetricGridView
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;
}
}
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>
TableLayout
and GridLayout
support column spanning, but GridView
does not.