RelativeLayout文本视图重叠

时间:2012-06-10 21:16:44

标签: android android-layout

我有一个相当简单的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字段不应重叠。

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

enter image description here

如何解决这个问题?

3 个答案:

答案 0 :(得分:43)

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

同时设置android:maxLines="1"Fix width for tournament winner因为其long锦标赛名称无法看到...

<强> row.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>

答案 1 :(得分:11)

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

但有一件事 - 在第一个文本视图(tournament_name)中我必须使用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>

答案 2 :(得分:-3)

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