对齐文本视图

时间:2011-05-24 14:47:59

标签: android layout

我正在开发一个Android应用程序,其相对布局如下所示。

以下是应用在屏幕上显示方式的简短链接:http://imgur.com/c4rNJ。我希望'文字1'出现在'懒惰的狐狸......'正上方。希望这有助于澄清我希望实现的目标。

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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:layout_width="fill_parent"
    android:background="@color/white">

    <TextView android:id="@+id/text1" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_marginLeft="0dip"


        android:textColor="@color/black" android:text="Text 1" android:lines="1"
        android:scrollHorizontally="true" android:ellipsize="end" />

    <Button android:id="@+id/checkBox" android:layout_height="wrap_content"
        android:layout_width="wrap_content" android:drawableRight="@drawable/checkbox_unchecked_30"
        android:layout_below="@+id/text1" android:background="@color/white" />

    <TextView android:id="@+id/text2" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_toRightOf="@+id/checkBox"
        android:layout_alignTop="@+id/checkBox" android:layout_below="@+id/text1"


        android:textColor="@color/black" android:text="a lazy fox jumped over the dam and said help"

        android:lines="1" android:scrollHorizontally="true" android:ellipsize="end" />

    <TextView android:id="@+id/text3" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_toRightOf="@+id/checkBox"
        android:layout_below="@+id/text2" android:textColor="@color/black"
        android:text="Text 3" />

    <TextView android:id="@+id/text4" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_below="@+id/text2"
        android:layout_toRightOf="@+id/text3" android:textColor="@color/black"
        android:text="Text 4" />

    <TextView android:id="@+id/text5" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_below="@+id/text2"
        android:layout_toRightOf="@+id/text4" android:textColor="@color/black"
        android:text="Text 5" />

</RelativeLayout>

我希望“文字1”出现在以“懒狐狸......”开头的文字正上方。现在,“文本1”出现在复选框上方。我不知道如何实现上述目标。我尝试了各种各样的东西,但似乎没有任何工作。我应该做些什么来实现所需的布局?

4 个答案:

答案 0 :(得分:3)

您需要将layout_alightLeft属性添加到text1

<TextView android:id="@+id/text1" 
    android:layout_alignLeft="@+id/text2"
    ...
/>

enter image description here


完整布局文件:

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

    <TextView android:id="@+id/text1" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_marginLeft="0dip"
        android:layout_alignLeft="@+id/text2"
        android:text="Text 1"
        android:lines="1"
        android:scrollHorizontally="true" 
        android:ellipsize="end" />

    <Button
        android:id="@+id/checkBox" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"        
        android:layout_below="@+id/text1"
        android:text="button"  />

    <TextView 
        android:id="@+id/text2" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/checkBox"
        android:layout_alignTop="@+id/checkBox" 
        android:layout_below="@+id/text1"         
        android:text="a lazy fox jumped over the dam and said help"
        android:lines="1" 
        android:scrollHorizontally="true"
         android:ellipsize="end" />

    <TextView 
        android:id="@+id/text3" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/checkBox"
        android:layout_below="@+id/text2"        
        android:text="Text 3" />

    <TextView 
        android:id="@+id/text4" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_below="@+id/text2"
        android:layout_toRightOf="@+id/text3"        
        android:text="Text 4" />

    <TextView
        android:id="@+id/text5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text2"
        android:layout_toRightOf="@+id/text4"        
        android:text="Text 5" />

</RelativeLayout>

答案 1 :(得分:2)

我的目标是Android 1.5,其中前向引用在RelativeLayout中不起作用。前向引用首先在Android 1.6中实现(请参阅:http://developer.android.com/resources/articles/ui-1.6.html),因此其他任何建议的解决方案都无效。

答案 2 :(得分:1)

如果我理解你的要求,你希望“Text1”显示在“懒惰的狐狸......”的正上方/对齐。

尝试将第一个TextView的定义更改为此(注意最后一个属性):

    <TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="0dip"
    android:textColor="@color/black"
    android:text="Text 1"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_alignLeft="@+id/text2" />

编辑: 这是完整的布局文件:

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

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="0dip"
    android:textColor="@android:color/black"
    android:text="Text 1"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_alignLeft="@+id/text2" />

<Button
    android:id="@+id/checkBox"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_below="@+id/text1"
    android:drawableRight="@drawable/checkbox_unchecked_30"
    android:background="@android:color/white" />

<TextView
    android:id="@+id/text2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/checkBox"
    android:layout_alignTop="@+id/checkBox"
    android:layout_below="@+id/text1"


    android:textColor="@android:color/black"
    android:text="a lazy fox jumped over the dam and said help"

    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end" />

<TextView
    android:id="@+id/text3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/checkBox"
    android:layout_below="@+id/text2"
    android:textColor="@android:color/black"
    android:text="Text 3" />

<TextView
    android:id="@+id/text4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/text2"
    android:layout_toRightOf="@+id/text3"
    android:textColor="@android:color/black"
    android:text="Text 4" />

<TextView
    android:id="@+id/text5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/text2"
    android:layout_toRightOf="@+id/text4"
    android:textColor="@android:color/black"
    android:text="Text 5" />
</RelativeLayout>

答案 3 :(得分:0)

我认为您应该将android: layout_below="@id/editText2"添加到text1