GridView 自动调整图像
Posted
技术标签:
【中文标题】GridView 自动调整图像【英文标题】:GridView auto fit images 【发布时间】:2011-08-17 20:51:51 【问题描述】:我试图让图像显示在 GridView 中并自动设置列,到目前为止,我不得不手动设置列数,这不是我想要做的,因为这会影响图像的大小不同尺寸的屏幕。我已经尝试将其设置为 auto_fit 但它仅在屏幕中间显示 2 列。这就是我想要实现的目标:(每个红色方块代表一个图像)
然后,当切换到横向模式时,我希望列自动适应,使其全部均匀。 任何帮助将不胜感激,谢谢:)
【问题讨论】:
【参考方案1】:试验 GridView 属性,特别是 android:numColumns="auto_fit"
和 android:stretchMode
。以下对我有用:
<GridView
android:id="@+id/myGrid"
android:layout_
android:layout_
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
【讨论】:
太棒了。我有 auto_fit,但缺少 columnWidth。在我添加之后,事情开始变得很好。 我什么都有,除了 columnWidth 参数,它是强制性的 2 列中的任何内容 我有完全相同的 XML,但 GridView 仍然只显示 2 列! @ΕГИІИО 如果您不指定 columnWidth,默认情况下您将获得 2 列,正如查看 GridView 的源代码会告诉您的那样。对于这些情况,您可以使用我的解决方案(在此处指定)。【参考方案2】:更好的解决方案是以编程方式测量宽度,这样您就不会得到硬编码的列宽:
Android: How does GridView auto_fit find the number of columns?
【讨论】:
【参考方案3】:我不确定为什么有人否决了我上面的答案(所以我再次投了赞成票):我必须以编程方式解决类似的问题(使用 ImageView 子项的 GridView)。为了清楚起见,删除了一些代码:
int iDisplayWidth = getResources().getDisplayMetrics().widthPixels ;
iImageWidth = iDisplayWidth
/ iNumberOfColumns ;
gridview.setColumnWidth( iImageWidth );
gridview.setStretchMode( GridView.NO_STRETCH ) ;
/* wrap_content in the xml file is supposed to do this, but it didn't seem to work */
最好的问候,
皮西亚
【讨论】:
为什么在拉伸模式下 NO_STRETCH 比 STRETCH_COLUMN_WIDTH 更好?以上是关于GridView 自动调整图像的主要内容,如果未能解决你的问题,请参考以下文章