我希望在GridView
中显示一些图像缩略图(图像是正方形),这些约束条件是每行显示两个图像和图像符合屏幕宽度(填充和边距除外)但具有最大宽度和高度(例如1英寸)
我已经阅读了问题,但无法解决问题。你能帮我吗?
GridView xml:
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical"
android:stretchMode="columnWidth"
android:verticalScrollbarPosition="right"
android:verticalSpacing="10dp"
android:padding="10dp" />
GridView项目xml:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:maxWidth="72pt"
android:maxHeight="72pt"
/>
我添加了两张图片以显示我想要的内容
第一张照片(4英寸手机)正是我想要的,但随着屏幕宽度增长(平板电脑或横向),如图像2,我想放大图像项目。 (请注意,有一个最大宽度尺寸,因此此模式的结果与图像1中所示的手机不同)
答案 0 :(得分:1)
你必须自己计算所需的水平间距。
由于结果以像素为单位,并且您可能希望处理实际大小(如英寸或DP),因此首先需要将约束转换为像素。例如,要将DP转换为像素,请使用:
float px = someDpValue * context.getResources().getDisplayMetrics().density;
然后,您可以使用this method来获取gridView的大小,然后您就可以进行计算并相应地设置gridView及其适配器。
您可能需要设置每列的水平间距和高度。
请注意,如果网格内的imageViews将使用非方形图像,它们将保持其宽高比,因此您也必须处理它。您可以使用中心裁剪作为缩放类型,或者只是拉伸图像。
答案 1 :(得分:0)
您是否尝试将GridView的项目布局中的ImageView的layout_width设置为match_parent?
答案 2 :(得分:0)
您需要扩展imageview以创建高度始终与宽度匹配的imageview。 然后使用此视图而不是stock imageview并将布局宽度和高度设置为match_parent。并删除maxWidth和maxHeight。
答案 3 :(得分:0)
这是我刚刚测试的内容:
因为你在xml中添加了GridView,所以当你设置适配器时就已经绘制了它,因此调用了onMeasure。在这种情况下,您可以使用GridView.getWidth()
获取gridView的宽度(实际值)并将其传递给适配器的实例。然后你可以用它来设置项目的宽度和高度(在getView()
方法中),当然你必须手动计算边距,但如果在项目的布局xml中定义,填充可以完美地工作