【问题标题】:Gridview not fit for all screens in AndroidGridview 不适合 Android 中的所有屏幕
【发布时间】:2018-04-22 06:25:22
【问题描述】:

我正在使用 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>

谁能帮我解决这个问题?

【问题讨论】:

  • 正如您设置的numColumns,列宽是多余的。尝试从 gridView 中删除它。
  • @tahsinRupam 如果我删除它会显示单列
  • 是否要保持 ImageView 中心与文本对齐?
  • @ProkashSarkar,是的,我也希望 gridview 适合所有屏幕尺寸
  • 设置顶部布局 RelativeLayoutmatch_parent ,match_parent

标签: android android-gridview


【解决方案1】:

试试下面的 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'

尚未测试,但应该可以。

【讨论】:

  • 你添加了gradle依赖吗?
  • 您遇到什么错误?不要忘记在您的父 LinearLayout 中添加 : (xmlns:app="schemas.android.com/apk/res-auto"),id 为:linearlayout_Gridview
  • java.lang.ClassCastException: android.widget.AbsListView$LayoutParams 无法转换为 android.widget.LinearLayout$LayoutParams
  • 检查你的java代码,你需要从LinearLayout而不是AbsListView导入LayoutParams。
  • 应用您的建议后,此行会在片段类(Reminders.java)中引发错误
【解决方案2】:

使用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 个元素。只需复制并粘贴此FrameLayout 并相应地更改文本和图像。添加 12 个元素后,输出应如下所示:

【讨论】:

  • 图像和文本居中对齐,但 gridview 不适合屏幕尺寸
  • 您面临的具体问题是什么?如果可能,您能否详细说明或分享一个 ss?
  • 我有 15 张图片,我想将它们排列成 3 列和 5 行的组合,图片和文字显示良好,但不适合屏幕,如您在上面所附图片中看到的那样。我想要使 gridview 适合所有屏幕尺寸
  • 所以你想用gridView项目覆盖整个屏幕?
  • 是否可以让它适应所有屏幕
猜你喜欢
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多