Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gridView height is too tall when using an imageView inside

I'm having an issue with the height for the cells inside the GridView. Each of my cells will have an imageView inside like so:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">

<GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:id="@+id/eventGridView" android:numColumns="2"/>
</LinearLayout>

Here is the ImageView for each cell

<com.example.scheduling_android.view.RoundedCornerImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:maxWidth="150dp"
        android:maxHeight="150dp"
        xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/eventImageView"
        android:adjustViewBounds="false"/>

I was playing around with different image size for my imageView. What I got was that whenever my image becomes larger (say, 400 x 400px) the height of the cell becomes very tall (around double the size of the width, note that I set the grid to use 2 columns). However, when I save my image as a smaller size (say, 160 x 160px), the gridView came out correctly. The height and the width matches.

Here's a screenshot:

enter image description here

What seems to be the problem? Could it be that the large image is causing gridView to calculate the height of its cell incorrectly? What can I do to fix this?

like image 889
rycfung Avatar asked Sep 11 '12 05:09

rycfung


2 Answers

I think you haven't set adjustViewBounds to true. Can you set as follows?

imageView.setAdjustViewBounds(true);
like image 98
Halil Avatar answered Oct 18 '22 22:10

Halil


Here i have user 3 column for in each row and it works fine. Gallery view set the column width at run time,

mPhotoGalleryGridView.setColumnWidth(display.getWidth() / 3);

in layout

<GridView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/photogallerygridview"      
    android:padding="5dp"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:stretchMode="columnWidth"
    android:numColumns="3"
    android:gravity="center">    
</GridView>

in adapter: set imageview height and width,

imageview.setMaxHeight(150);
        imageview.setMinimumHeight(150);

Hope useful to you.

like image 2
Hiren Dabhi Avatar answered Oct 19 '22 00:10

Hiren Dabhi