 <p>I used a variation of Shawn's solution.. it looks nice on the Emulator.</p> <p>1) Decide on the # of columns, I chose 4 </p> <p>2) Set the Column Width</p> <pre><code>float xdpi = this.getResources().getDisplayMetrics().xdpi; int mKeyHeight = (int) ( xdpi/4 ); GridView gridView = (GridView) findViewById(R.id.gridview); gridView.setColumnWidth( mKeyHeight );// same Height &amp; Width </code></pre> <p>3) Setup the image in your adapter's getView method</p> <pre><code>imageView = new ImageView( mContext ); // (xdpi-4) is for internal padding imageView.setLayoutParams(new GridView.LayoutParams( (int) (xdpi-4)/2, (int) (xdpi-4)/2)); imageView.setScaleType( ImageView.ScaleType.CENTER_CROP ); imageView.setPadding(1, 1, 1, 1); </code></pre> <p>4) Layout</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numColumns="4" android:verticalSpacing="0dp" android:horizontalSpacing="0dp" android:gravity="center" android:listSelector="@null" /&gt; &lt;!-- android:columnWidth="90dp" Specified in code android:stretchMode="columnWidth" no noticable change --&gt; </code></pre> <p>That's it. </p>