我现在尝试两天来创建一个有效的GridView
,但它不会起作用,这就是它的样子:
你看,我的问题是文本重叠。
我已经发现,GridView
行的高度是由最后一项设置的。
我的XML看起来如此:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Startbildschirm">
<GridView
android:numColumns="2"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:horizontalSpacing="5dp"
android:verticalSpacing="5dp"
/>
</RelativeLayout>
我想解决这个问题的方法是在一行中获取最长视图的高度,然后将其设置为MinHeight到最后一个视图。我的问题是,视图只保存,只要它们可见,所以在向下和向上滚动高度再次不同。 有没有人知道如何解决这个问题?
答案 0 :(得分:3)
另一个解决方案是将单元格的父级保留为wrap_content,但要将TextView限制为例如2行或3行android:lines="2"
这个网格视图中的所有视图都具有相同的大小。
答案 1 :(得分:2)
你的问题在于gridViewItem布局(你在适配器中膨胀的布局) 不是网格视图,我相信它有
android:layout_height="wrap_content"
某处, 只需将布局高度设置为具有固定数量的dp
(android:layout_height ="10dp" for instance)
然后你就不会有问题了。
根据评论进行修改: 2个选项 - 1)如果列表不是很长,只需使用tableLayout并填充代码中的行,(减去它不会重新定位视图,因此需要比gridview更多的内存)但是它应该得到你想要的效果(每行使用换行内容和调整到文本的长度)
2)适配器正在使用某种列表 - 在使用网格之前运行它并获得最大高度,现在创建一个自定义适配器,在getView()中使用它(最大高度)返回approprite视图(所有这些都足以达到最大长度)
答案 2 :(得分:0)