Android GridView文本重叠

时间:2015-01-11 20:41:17

标签: java android xml gridview overlapping

我现在尝试两天来创建一个有效的GridView,但它不会起作用,这就是它的样子:

enter image description here

你看,我的问题是文本重叠。 我已经发现,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到最后一个视图。我的问题是,视图只保存,只要它们可见,所以在向下和向上滚动高度再次不同。 有没有人知道如何解决这个问题?

3 个答案:

答案 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)