相对布局覆盖RelativeLayout组件中声明的组件

时间:2012-02-15 09:23:55

标签: android android-layout android-intent relativelayout

我作为Android开发人员非常新,我目前正在理解RelativeLayout但面临一个较小的问题,即Textview覆盖了Image。在这里,我为你提供了我想要的东西和我得到的东西以及我所做过的代码。所以请帮助我。

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/firstImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/splash1" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/firstImage"
        android:layout_alignBaseline="@id/firstImage"
        android:text="@string/menu" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/splash1" />
</RelativeLayout>

这是我想要的布局图片。

enter image description here

请帮助我。

先谢谢..

4 个答案:

答案 0 :(得分:3)

使用这些属性

 android:layout_centerHorizontal="true"    
 android:layout_centerVertical="true"

用于文本视图..

检查此代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/relativeLayout1"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" >

<ImageView
    android:id="@+id/firstImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/logo2"/>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/logo2" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"      
    android:layout_centerHorizontal="true"    
    android:layout_centerVertical="true"     
    android:text="menu" />

答案 1 :(得分:1)

添加另外两个textview android:layout_centerHorizontal="true"android:gravity="center"的特性,因此文本将在TextView中居中。

如果文本太大(它会与图像重叠),可能会出现问题。为避免这种情况,您应该像这样定义您的布局:

<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
  <ImageView
    android:id="@+id/firstImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/splash1"
  />
  <ImageView
    android:id="@+id/secondImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/splash1" 
  />
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignTop="@id/firstImage"
    android:layout_alignBottom="@id/firstImage"
    android:layout_toRightOf="@id/firstImage"
    android:layout_toLeftOf="@id/secondImage"
    android:gravity="center"
    android:text="@string/menu"
  />
</RelativeLayout>

注意,在TextView之前如何定义两个图像视图。那是因为那些图像视图将是您的锚视图,这意味着其他所有内容都将根据它们进行对齐。你的TextView现在位于2个ImageView之间,因此无论有什么文字,它都不会重叠。

答案 2 :(得分:1)

用这个替换你的xml文件代码......

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

    <ImageView
        android:id="@+id/firstImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/splash1" />

    <ImageView
        android:id="@+id/firstImage2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/splash1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/firstImage2"
        android:layout_toRightOf="@+id/firstImage"
        android:text="@string/menu" />

</RelativeLayout>

答案 3 :(得分:1)

您可以切换到图形模式并修复上述问题。这不是你必须直接用XML定义所有东西,而是你可以切换到图形模式并修复它。