TextViews使用RelativeLayout重叠

时间:2012-07-10 02:47:51

标签: android android-layout relativelayout

我知道我可以使用LinearLayout来执行此操作,但我必须使用RelativeLayout,因为我需要另一个RelativeLayout来锚定到整体布局的底部,作为一种“状态”栏,我希望标题和文字位于状态栏上方,与顶部对齐。使用RelativeLayout是我可以让状态栏工作的唯一方法。唯一的问题是标题和文字TextViews相互重叠,我需要文字紧挨着标题:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
         >       

            <RelativeLayout
                android:id="@+id/status" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_alignParentBottom="true"
                android:paddingTop="10dp"
              >
                    <TextView 
                        android:id="@+id/status" 
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_alignParentLeft="true" 
                    />      
            </RelativeLayout>

            <TextView 
                android:id="@+id/title" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_above="@id/status"       
                android:layout_alignParentTop="true"
            />

            <TextView 
                android:id="@+id/text" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"    
                android:layout_alignParentTop="true"    
            />

    </RelativeLayout>

</FrameLayout>

3 个答案:

答案 0 :(得分:2)

您可以将LinearLayout用作RelativeLayout的子项。

   <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignParentTop="true">     
        <TextView 
            android:id="@+id/title" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        />
        <TextView 
            android:id="@+id/text" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        />
  </LinearLayout>

答案 1 :(得分:0)

XML布局按照“读取”的顺序呈现。所以你想要做这样的事情:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
         >       

           <TextView 
                android:id="@+id/title" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_above="@id/status"       
                android:layout_alignParentTop="true"
            />

            <TextView 
                android:id="@+id/text" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"    
                android:layout_alignParentTop="true"    
            />

            <RelativeLayout
                android:id="@+id/status" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_alignParentBottom="true"
                android:paddingTop="10dp"
              >
                    <TextView 
                        android:id="@+id/status" 
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:layout_alignParentLeft="true" 
                    />      
            </RelativeLayout>



    </RelativeLayout>

</FrameLayout>

我还会像其他人提到的那样将两个textViews包装在linearLayout中。这对你很有帮助。

希望有所帮助。

答案 2 :(得分:0)

从文本TextView中删除android:layout_alignParentTop="true"。这将解决你的问题!