28

我有一个相当简单的 ListView 行:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
    android:id="@+id/tournament_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:textSize="25dp" />

<TextView
    android:id="@+id/tournament_winner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:textSize="25dp" />

</RelativeLayout>

当文本"@+id/tournament_name"很长时 - 它与来自的文本重叠,"@+id/tournament_winner"我不明白为什么。

我尝试使用android:singleLine="false"无济于事。我也尝试使用android:inputType="textMultiLine"文档说android:singleLine="false"已弃用,但随后我收到警告:Attribute android:inputType should not be used with <TextView>: Change element type to <EditText> ?所以这里也不好。

我也尝试过使用android:ellipsize="end",但这不起作用。我认为这是因为左侧的文本TextView ("@+id/tournament_name")不够长,无法填满整个宽度ListView(此处没有播种代码)。

我确信如果我使用android:layout_width="wrap_content"两个 TextView 字段不应该重叠。

这是一个例子(见第二行):

在此处输入图像描述

任何进一步的想法如何解决这个问题?

4

3 回答 3

49
    android:layout_toLeftOf="@id/tournament_winner" in First TextView.

也设置了android:maxLines="1"Fix width for tournament winner因为当它变得很长时,锦标赛名称看不到......

行.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tournament_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/tournament_winner"
        android:maxLines="1"
        android:text="NAMEEEEEEEEEEEEEEEEEEEEEEEEEEE"
        android:textSize="25dp" />

    <TextView
        android:id="@+id/tournament_winner"
        android:layout_width="wrap_content" android:layout_marginLeft="10dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="WINER"
        android:textSize="25dp" />

</RelativeLayout>
于 2012-06-23T09:59:25.023 回答
11

非常感谢您的回答 - 抱歉,我花了一些时间回复。我最终使用了您的android:layout_toLeftOf="@+id/tournament_winner",但留下了单行和左侧的边距未使用,因为结果对我来说似乎很完美(希望其他设备也是如此)。

不过有一件事 - 在第一个文本视图(锦标赛名称)中,我必须使用android:layout_toLeftOf="@+id/tournament_winner"而不是android:layout_toLeftOf="@id/tournament_winner"- 注意添加的+。出于某种原因,我使用错误android:layout_toLeftOf="@id/tournament_winner"错误:找不到与给定名称匹配的资源...所以似乎有可能并且需要在调用它时定义资源,因为系统之前不知道它它被定义了。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<TextView
    android:id="@+id/tournament_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/tournament_winner"            
    android:layout_alignParentLeft="true"        
    android:textSize="25dp" />

<TextView
    android:id="@+id/tournament_winner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    android:layout_alignParentRight="true"
    android:textSize="25dp" />

</RelativeLayout>
于 2012-07-21T18:17:44.753 回答
-3

您可以使用单个文本视图代替两个,并在一个文本视图中简单地显示两个字符串!

于 2016-06-30T06:16:19.117 回答