【问题标题】:Grid View auto number of columns depending on screen size网格视图根据屏幕大小自动显示列数
【发布时间】:2015-12-07 16:59:19
【问题描述】:

我正在使用 Gridview,我想在其中显示一些图片。我希望我的网格视图在所有尺寸的屏幕上看起来都很好。我的意思是我正在为不同的 Android 设备开发我的应用程序,例如三星 Galaxy Grand 是普通设备,三星 tab 4 是 7 英寸设备,最后是三星 tab 10 是 10 英寸设备。

所以我希望我的网格视图采用在设备上看起来不错的自动编号,例如我想要 10 英寸三星平板电脑上的 4 列,并且在 7 英寸上具有相同的 3 或 2 列,并且在其他设备上与此相同。

所以到目前为止我所做的很简单,为图像制作了一个数组,并将适配器设置为 gridview,这是简单的代码,与我的问题无关,所以我不共享该代码我所拥有的设计在 xml 中,所以我的 xml 看起来像这样

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


    <GridView
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="250dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="50dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp" />

</LinearLayout>

所以请帮我解决这个问题。如何使列数自动适应屏幕宽度。 ??

【问题讨论】:

  • 我知道这个公认的答案,但我不知道他是如何工作的
  • 我试过你的代码,它工作正常。有什么问题?
  • @Alexandr 你在哪些设备上测试了我的代码?
  • 联想 s960。我刚刚将 columnWidth 的大小更改为较小的,并在模拟器上进行了检查。巡回演示的预期结果是什么?

标签: android gridview layout


【解决方案1】:

只需为不同的屏幕尺寸使用不同的列数 - 覆盖不同 values 文件夹(小、普通、大、xlarge)中的值,请参阅documentation

例子:

活动或片段:

<GridView
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="@integer/column_count"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:verticalSpacing="50dp"
    />

项目:

<ImageView
    android:id="@+id/image"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

values/integers.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="column_count">2</integer>
</resources>

values-large/integers.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="column_count">3</integer>
</resources>

values-xlarge/integers.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="column_count">4</integer>
</resources>

【讨论】:

  • 是的,最后一件事是这样的,我也在想这个,但想知道是否可以通过其他方式完成
  • @CoasMckey 您可以根据屏幕尺寸计算此值。但恕我直言,最好使用认为,该平台为您提供)尤其是 Android 中的屏幕尺寸。
  • IMO 这仍然让人觉得有点荒谬,因为 HTML/CSS 可以很简单地做到这一点,并且可以缩放到您不期望的大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
相关资源
最近更新 更多