【问题标题】:TextViews overlapping using a RelativeLayout使用 RelativeLayout 重叠的 TextView
【发布时间】:2013-03-16 21:48:23
【问题描述】:

我知道我可以使用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>

【问题讨论】:

    标签: android android-layout android-relativelayout


    【解决方案1】:

    您可以将 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>
    

    【讨论】:

      【解决方案2】:

      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>
      

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

      希望对您有所帮助。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多