gridView height is too tall when using an imageView inside

点点圈 提交于 2019-12-06 01:27:21

问题


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:

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?


回答1:


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

imageView.setAdjustViewBounds(true);



回答2:


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.




回答3:


Try the below code. The width should be in dips

 android:adjustViewBounds="true"
 android:maxWidth="150dip"
 android:maxHeight="150dip"



回答4:


Use wrap_content instead of using fill_parent.

Because fill_parent will actually take original height of image and try to fill it in the screen. Even if u use 400x400 image and set layout_width = "160dp" and layout_height = "160dp" , it will work because we are not allowing image to display more than that.



来源:https://stackoverflow.com/questions/12363106/gridview-height-is-too-tall-when-using-an-imageview-inside

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!