Android GridView未正确缩放
我花了几个小时在这个问题上,研究了每一个相关的问题,这样我就可以在没有解决方案的情况下找到问题 我的问题是: 我有一个网格图像视图。我需要3列(以匹配iOS版本和美学)。如果我将numColumns设置为3,那么每一行的图像行的顶部和底部之间会有很多额外的空间。如果我将宽度设置为autofit,我总是得到2,它们看起来更好,但更喜欢3列 我错过了什么 布局:Android GridView未正确缩放,android,gridview,Android,Gridview,我花了几个小时在这个问题上,研究了每一个相关的问题,这样我就可以在没有解决方案的情况下找到问题 我的问题是: 我有一个网格图像视图。我需要3列(以匹配iOS版本和美学)。如果我将numColumns设置为3,那么每一行的图像行的顶部和底部之间会有很多额外的空间。如果我将宽度设置为autofit,我总是得到2,它们看起来更好,但更喜欢3列 我错过了什么 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="top" >
<LinearLayout
android:id="@+id/llayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
>
<ImageView
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#666666"
android:clickable="false"
android:contentDescription="@string/title_card_collection"
android:src="@drawable/sportscard2x" />
</LinearLayout>
<GridView
android:id="@+id/cardGrid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_above="@+id/llayout"
android:gravity="center"
android:horizontalSpacing="2dip"
android:numColumns="3"
android:stretchMode="columnWidth"
android:layout_alignParentBottom="true"
android:verticalSpacing="2dip" >
</GridView>
我希望这是一件容易的事,我只是错过了。提前谢谢
更新:添加了屏幕截图。问题是只显示了1行,如果向下滚动,您会看到其他3行,但中间有很大的空间。
请参阅下面的“提示3”。可以找到带有代码的示例
我认为问题在于您将
的布局高度设置为包裹内容。栅格视图似乎无法正确计算它的总包裹高度,因此,它只显示一行
您可以将layout\u height
设置为match\u parent
(或任何其他固定高度,如120dp
或其他任何东西),也可以尝试扩展GridView
Java对象并进行一些自己的计算(然后还需要在XML布局中使用自定义的网格视图对象:
)
不过,我需要强调的是,在API 11之前的Java代码中,没有任何定义良好的方法可以从网格视图中获取列数(您可能需要这样来计算您的数据适配器将产生多少行)。API 11中引入了getNumColumns
。也没有合适的方法来查找行之间的间距(API 16中引入了getHorizontalSpacing()
和getVerticalSpacing()
方法)
供参考:
技巧1:
我还没有亲自测试过,但你可以试试这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
/>
<GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
...
/>
</LinearLayout>
希望您能从中找到一些灵感:-)
干杯,
--dbm
请参阅下面的“提示3”。可以找到带有代码的示例
我认为问题在于您将
的布局高度设置为包裹内容。栅格视图似乎无法正确计算它的总包裹高度,因此,它只显示一行
您可以将layout\u height
设置为match\u parent
(或任何其他固定高度,如120dp
或其他任何东西),也可以尝试扩展GridView
Java对象并进行一些自己的计算(然后还需要在XML布局中使用自定义的网格视图对象:
)
不过,我需要强调的是,在API 11之前的Java代码中,没有任何定义良好的方法可以从网格视图中获取列数(您可能需要这样来计算您的数据适配器将产生多少行)。API 11中引入了getNumColumns
。也没有合适的方法来查找行之间的间距(API 16中引入了getHorizontalSpacing()
和getVerticalSpacing()
方法)
供参考:
技巧1:
我还没有亲自测试过,但你可以试试这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
/>
<GridView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
...
/>
</LinearLayout>
希望您能从中找到一些灵感:-)
干杯,
--dbm参考这个毫无帮助的答案。更新以显示更多的XML。您可以发布所需结果的屏幕截图或模型吗?你现在有什么。我刚刚使用了三列gridView,没有任何问题。我检查了你的布局,它按照你的期望工作良好。添加了图像。希望这更清楚。我需要它来显示所有的行。(类似于图片库)参考这个毫无帮助的答案。更新以显示更多的XML。您可以发布所需结果的屏幕截图或模型吗?你现在有什么。我刚刚使用了三列gridView,没有任何问题。我检查了你的布局,它按照你的期望工作良好。添加了图像。希望这更清楚。我需要它来显示所有的行。(类似于图像库)谢谢,我今晚会尝试一下,让你知道它是如何发展到不完美的,但技巧3让我走上了正确的道路,现在只需要使用覆盖。谢谢嗯,还是有差距。无法摆脱它。谢谢,我今晚会尝试一下,让你知道它是如何发展到不完美的,但技巧3让我走上了正确的道路,只需要现在就玩覆盖。谢谢嗯,还是有差距。无法摆脱它。