9

我的应用程序在 gridview 中以横向显示图像图标。为此,我使用 xml 作为

<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:numColumns="4"
    android:columnWidth="100px"
    android:stretchMode="columnWidth"
    android:gravity="center"/>

对于纵向,我只想在 gridview 列中显示两个图像图标。怎么做?

4

2 回答 2

19

通过使用自适应资源:确保在资源文件夹/res中有以下文件夹:values-landvalues-port. 在这两个文件夹中添加一个资源文件,我们称之为 integers.xml。

/values-land/integers.xml中,您至少将拥有:

<resources>
    <item name="grid_rows" type="integer">4</item>
</resources>

而对于values-port/integers.xml

<resources>
    <item name="grid_rows" type="integer">3</item>
</resources>

布局更改为:

<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="100px"
    android:gravity="center"
    android:numColumns="@integer/grid_rows"
    android:stretchMode="columnWidth" />

注意@integer/grid_rows的存在

于 2013-09-17T13:16:58.413 回答
2

我遇到了这个问题,gunar 的回答非常有帮助,但我想我可以添加更多细节。如果在 AndroidStudio 中,将目录视图设置为“Project”(这样您就可以看到您的新目录),然后右键单击“res”以创建新的资源目录。创建两个新目录,“values-port”和“values-land”,分别作为类型值。

然后,在 values-land 中,添加一个整数项:

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

在 values-port 中,添加一个整数项:

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

现在在您的 gridview 布局中,而不是硬编码您的 numColumn:

<GridView
       android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:numColumns="@integer/columns"
        android:columnWidth="100px"
        android:stretchMode="columnWidth"
        android:gravity="center"/> 

这本质上是 gunar 的解决方案(谢谢 gunar!),但它增加了我在此过程中发现的一些细节。例如,在更改为项目视图之前,我看不到我正在创建的 res 目录,并且已经存在整数资源类型,因此我们不需要将列声明为项目,然后将类型设置为整数。(顺便说一句:我喜欢 Android XML 工具!)

于 2015-10-03T19:27:16.003 回答