Java Android GridView文本重叠

Java Android GridView文本重叠,java,android,xml,gridview,overlapping,Java,Android,Xml,Gridview,Overlapping,我现在尝试了两天来创建一个工作的GridView,但它不起作用,它看起来是这样的: 你看,我的问题是文本重叠。 我已经发现,GridView行的高度是由最后一项设置的。 我的XML看起来是这样的: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wi

我现在尝试了两天来创建一个工作的
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>

我解决这个问题的想法是获取一行中最长视图的高度,然后将其设置为最后一个视图的最小高度。我的问题是,视图只有在可见的情况下才会保存,因此向下和向上滚动的高度再次不同。
有人知道如何解决这个问题吗?

您的问题在于gridViewItem布局(您在适配器中充气的布局) 我相信gridview不是这样的

android:layout_height="wrap_content" 
某处, 只需将布局高度设置为具有固定的dp量

(android:layout_height ="10dp" for instance) 
那你就不会有问题了

根据评论进行编辑: 2项选择- 1) 如果列表不是很长,只需使用tableLayout并在代码中填充行(缺点是它不接收视图,因此比gridview占用更多内存),但它应该得到您想要的效果(每行使用换行内容并根据文本长度进行调整)


2) 适配器正在使用某种类型的列表-在使用网格之前运行该列表并获取最大高度,现在创建一个自定义适配器,在getView()中使用该列表(最大高度)来返回适当的视图(所有视图都足够大,可以容纳最大长度)

您的问题在于gridViewItem布局(您在适配器中充气的那一个) 我相信gridview不是这样的

android:layout_height="wrap_content" 
某处, 只需将布局高度设置为具有固定的dp量

(android:layout_height ="10dp" for instance) 
那你就不会有问题了

根据评论进行编辑: 2项选择- 1) 如果列表不是很长,只需使用tableLayout并在代码中填充行(缺点是它不接收视图,因此比gridview占用更多内存),但它应该得到您想要的效果(每行使用换行内容并根据文本长度进行调整)


2) 适配器正在使用某种类型的列表-在使用网格之前运行它并获得最大高度,现在创建一个自定义适配器,在getView()中使用该列表(最大高度)返回适当的视图(所有视图都足够大,可以达到最大长度)

我想,解决方案描述如下:


在:

中报告了一个bug,我想,解决方案描述在:


另一种解决方案是保留单元格的父级来包装内容,但将TextView限制为例如2或3行
android:lines=“2”

这意味着网格视图中的所有视图都将具有相同的大小。

另一种解决方案是保留单元格的父级来包装内容,但将文本视图限制为例如2或3行
android:lines=“2”

这将使网格视图中的所有视图具有相同的大小。

这将不起作用,因为视图的高度取决于文本的长度,文本的长度在文本框中设置:/@ich5003定义了设置大小的文本框在文本溢出时将不显示文本,视图的大小取决于文本,因为这是您定义它的方式,我假设(共享项目布局,我将确定)在任何情况下,您都可以创建一个方法,将文本剪切到某个特定大小后(如果(s.length>max),那么s=s.subString(0,maxChars))这样,每个视图的文本大小都相同。如果您是对的,视图的高度取决于文本。但我不能改变这一点,因为文本有时是不同的,它必须显示整个文本,所以我不能直接剪切它。我的问题不是用静态高度设置视图,我正在寻找一种解决方案,将一行的最小高度设置为最长视图的高度。也许我把我的问题描述得有点错误,但是谢谢你的帮助:)谢谢你的回答,我还没有测试过,但是听起来是正确的,所以thx:)那不行,因为视图的高度取决于文本的长度,它是在文本框中设置的:/@ich5003您为其定义设置大小的文本框在溢出时不会显示文本,视图的大小取决于文本,因为我假设您是这样定义它的(共享项目布局,我将确定)在任何情况下,您都可以创建一个方法,将文本剪切到某个特定大小(如果(s.length>max),然后s=s.subString(0,maxChars)),这样,您的文本对于每个视图都具有相同的大小。您是对的,视图的高度取决于文本。但我不能改变这一点,因为文本有时是不同的,它必须显示整个文本,所以我不能直接剪切它。我的问题不是用静态高度设置视图,我正在寻找一种解决方案,将一行的最小高度设置为最长视图的高度。也许我把我的问题描述得有点错误,但是谢谢你的帮助:)谢谢你的回答,我还没有测试过,但听起来是正确的,所以谢谢:)如果我理解你的问题,两列中的单元格高度不一样,但行高是第二列中项目的高度?如果我理解你的问题,两列中的单元格高度不同,但行高是第二列中项目的高度?答案为Thx:)但是新的RecyclerView布局管理器现在已经解决了问题:)答案为Thx:)但是新的RecyclerView布局管理器现在已经解决了问题:)