Reputation: 1800
im trying to get images displayed in a GridView and get the columns automatically set, so far I've had to manually set the number of columns which is not what i want to do as this will affect how big the images are on different sized screens. I ahve tried setting it to auto_fit but it only displays 2 columns in the middle of the screen. This is what im trying to achieve: (Each red square represents an image)
then when turned to landscape mode i want the columns to auto fit so that its all even. Any help would be much appreciated, thank you :)
Upvotes: 34
Views: 50394
Reputation: 185
I'm not sure why someone voted down the answer above me (so I voted it up again): I had to solve a similar problem programatically (with a GridView of ImageView children). Some code removed for clarity:
int iDisplayWidth = getResources().getDisplayMetrics().widthPixels ;
iImageWidth = iDisplayWidth
/ iNumberOfColumns ;
gridview.setColumnWidth( iImageWidth );
gridview.setStretchMode( GridView.NO_STRETCH ) ;
/* wrap_content in the xml file is supposed to do this, but it didn't seem to work */
Best regards,
Piesia
Upvotes: 13
Reputation: 16122
A better solution is to measure the width programmatically, so you won't end up with a hard-coded column width:
Android: How does GridView auto_fit find the number of columns?
Upvotes: 5
Reputation: 26149
Experiment with the GridView attributes, specifically android:numColumns="auto_fit"
and android:stretchMode
. The following works for me:
<GridView
android:id="@+id/myGrid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
Upvotes: 76