这件事现在已经开了我一段时间了,我似乎无法解决它。
我有一个网格视图,其中显示了一些位图。当我通过适配器填充我的图像视图时,我在所有图像边添加了一个5dp的填充(iv.setPadding(5,5,5,5);),但不知何故,每个顶部和底部都添加了更多的空间我的gridview上的项目。
我知道这已经是asked一个few times here,其中一些甚至已经接受了答案,但是,当我尝试起诉上面网址中描述的答案时,我仍然在顶部和底部保持相同的额外空间。
现在有没有其他方法可以做到这一点?
以下是我的一些代码:
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageGrid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numColumns="6"
/>
grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
我尝试将以下内容添加到main.xml
中的listselector属性中以下是顶部和底部多余空格的样子(侧面的那些是我正在添加的如上所述):
关于如何删除这些血腥空间的任何其他想法,以便我的网格视图具有相同的间距?
提前致谢,
答案 0 :(得分:24)
对我来说,它通过在我的Adapter类中设置imageview.setAdjustViewBounds(true);
来解决问题。
似乎我的方形图像在宽度上自动调整大小,但Gridview仍然使用原始高度。通过调整边界,即使默认拉伸模式已启用,两个尺寸也会自动调整大小并且所有项目都会平滑显示。
答案 1 :(得分:8)
如果没有另外设置,GridView将通过以各种方式拉伸事物来覆盖您想象它应该产生的布局。如果要通过定义网格项的列宽和大小来完全控制布局,则必须确保将GridView的 stretchMode 属性设置为“none”< /强>
<GridView
...
android:stretchMode="none">
</GridView>
此外,您使用GridView宽度填充父级。我认为你应该包装宽度的内容,除非你想要额外的填充。你在哪里添加5dp填充?围绕每个位图或在gridview的边缘?我没有看到它。
你可能应该填补高度。 (在下面的一些宽度和高度可能会被“wrap_content”替换)
所以,对你来说
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageGrid"
android:stretchMode="none"
android:layout_width="XXXdp"
android:layout_height="fill_content"
android:numColumns="6"
/>
另外,不确定是否需要列间距和宽度,这可能是(或dp而不是wrap_content) - 您可能不需要在GridView中使用这些 - 我不确定:
android:columnWidth="YYYdp"
android:horizontalSpacing="0dp"
带有5dp填充的ImageViews:
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_item_image"
android:padding="5dp"
android:layout_width="UUUdp"
android:layout_height="VVVdp" />
答案 2 :(得分:1)
我找到了一种简单的方法来绕过它。只需在android:layout_marginRight
中添加GridView
。
答案 3 :(得分:-1)
第1步:
android:stretchMode="none"
android:numColumns="auto_fit"
android:gravity="center"
第2步: 在onMeasure中返回您计算的宽度和高度