为什么TextViews在RelativeLayout中相互碰撞

时间:2010-03-17 14:21:03

标签: android android-layout android-relativelayout

我遇到的问题是,相对高度的两个Textview在相互之间相互碰撞。

我使用以下布局。

<?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="fill_parent">

<ImageView 
       android:id="@+id/logo" 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" 
       android:adjustViewBounds="true"
       android:scaleType="centerInside"
       android:src="@drawable/icon" />

<TextView 
       android:id="@+id/name"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" 
       android:text="NameNameNameNameNameNameName"
       android:layout_alignParentTop="true"
       android:layout_toRightOf="@id/logo"
       android:gravity="clip_horizontal" 
       android:lines="1" />

<TextView 
      android:id="@+id/information"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Distance"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true" />

<TextView
      android:id="@+id/nrcoupons"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Number"
      android:layout_alignRight="@id/information"
      android:layout_alignBottom="@id/logo" />

<TextView
      android:id="@+id/subcategory"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" 
      android:text="Subcategory"
      android:layout_alignLeft="@id/name"
      android:layout_alignBottom="@id/logo" />

</RelativeLayout>

这给了我这个观点:

alt text http://janusz.de/~janusz/view.png

一切都是我需要的,除了两个文本视图名称和信息显示在同一个屏幕空间上,一个在另一个上面。

我该如何避免这种情况?

2 个答案:

答案 0 :(得分:2)

对于@+id/name TextView,请为右侧android:layout_toLeftOf="..."添加TextView。屏幕截图和XML似乎没有对齐(屏幕截图在覆盖的TextView中显示为“距离”,但XML没有),所以我不完全确定这是哪个小部件。

如果您的目标是Android 1.5,则需要在XML中对小部件进行排序,以便在从android:layout_toLeftOfandroid:layout_toRightOf引用小部件之前定义小部件。如果您定位的是Android 1.6及更新版本,则可以按任意顺序排列,但第一次出现的任何不同ID都必须包含+符号,即使第一次出现在android:layout_toLeftOf中也是如此属性而不是android:id属性。

答案 1 :(得分:0)

你的namenamename textview设置为width = fill_parent,所以你不能把它放在右边;)