Gridview不适合Android中的所有屏幕

时间:2018-04-22 06:25:22

标签: android android-gridview

我正在使用Android应用。在这个问题上,我遇到了GridView和图像不适合所有屏幕尺寸的问题。

这里我在片段

中有gridview

fragment_reminders.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearlayout_Gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="5dp">

    <GridView
        android:id="@+id/mGridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="100dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="3"
        android:stretchMode="spacingWidthUniform"
        android:verticalSpacing="10dp" />
</LinearLayout>

gridview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="5dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <ImageView
            android:id="@+id/mImageView"
            android:layout_width="35dp"
            android:layout_height="35dp" />

        <TextView
            android:id="@+id/mTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textAlignment="center"
            android:textSize="10dp" />
</LinearLayout>

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用GridLayout获取所需结果。首先添加 gridLayout 依赖

compile 'com.android.support:gridlayout-v7:27.0.1'

然后,添加以下xml代码:

 <android.support.v7.widget.GridLayout
    android:id="@+id/gridLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:columnCount="3">

    <FrameLayout
        app:layout_columnWeight="1"
        app:layout_rowWeight="1">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@android:drawable/ic_lock_idle_alarm"
                android:layout_marginBottom="5dp"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Alarms"/>
        </LinearLayout>

     </FrameLayout>

  </android.support.v7.widget.GridLayout>

在上面的代码中,我刚刚添加了1个元素。只需复制&amp;粘贴此FrameLayout并更改文字&amp;相应的图像。添加12个元素后,输出应如下所示:

enter image description here

答案 1 :(得分:0)

尝试下面的GridLayout,

<android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        app:alignmentMode="alignBounds"
        app:columnCount="3"
        app:rowCount="5">

    </android.support.v7.widget.GridLayout>

将GridLayout项目更改为以下内容,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_margin="1.5dp"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="5dp"
        app:layout_columnWeight="1"
        app:layout_gravity="fill"
        app:layout_rowWeight="1">

        <ImageView
            android:id="@+id/mImageView"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:layout_gravity="center" />

        <TextView
            android:id="@+id/mTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:textAlignment="center"
            android:textSize="10dp" />

    </LinearLayout>

使用support.v7.widget.GridLayout添加依赖项

implementation 'com.android.support:cardview-v7:27.0.1'

尚未测试,但应该可以使用。