如何在Android中实现这种类型的GridView?

时间:2015-12-10 10:57:35

标签: java android gridview

我实现了如下的GridView:

enter image description here

但是当我旋转手机时,会发生这种情况:

http://dev.thinktravellive.com/

我希望图像保持在纵向模式下的状态。我不希望视图间隔。

网格视图:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f0f0f0"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main">

<GridView
    android:id="@+id/gridView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:columnWidth="170dp"
    android:drawSelectorOnTop="true"
    android:focusable="true"
    android:gravity="center"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth" />
</FrameLayout>

网格项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/blue"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

</LinearLayout>

我在这里重新调整适配器中的图像大小如下:

holder = new ViewHolder();
holder.image = (ImageView) row.findViewById(R.id.image);
ImageItem item = data.get(position);
holder.image.setImageBitmap(Bitmap.createScaledBitmap(item.getImage(), 180, 200, true));

我还希望图像能够正确地重新调整尺寸而不会出现任何模糊等。

2 个答案:

答案 0 :(得分:0)

你已经给了android:columnWidth="170dp"并且在 griditem.xml 中你已经给出了固定的高度,这就是为什么会发生这种情况。

答案 1 :(得分:0)

使用以下示例自动调整gridview

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<GridView
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:verticalSpacing="0dp"
    android:horizontalSpacing="0dp"
    android:stretchMode="columnWidth"
    android:numColumns="auto_fit"/>

</FrameLayout>