布局与元素的特定位置

时间:2013-03-30 00:20:34

标签: android android-layout android-linearlayout relativelayout

我有这个layout.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="wrap_content"
        android:paddingRight="10dp"
        android:paddingLeft="10dp">
    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dip"
        android:background="@color/white"
        android:layout_marginLeft="17dp"
        android:layout_marginRight="17dp">
         <LinearLayout android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:id="@+id/list_linearLayout">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <!--  titre food -->
                <TextView android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:id="@+id/souscarte_element_titleT"
                android:textColor="@color/black"
                android:paddingLeft="5dp"/>

                 <!-- description food -->          
                <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                    <TextView android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/black"
                    android:id="@+id/souscarte_element_descT"
                    android:paddingLeft="5dp"/>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
            <!-- promo food -->
             <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:id="@+id/souscarte_element_promoT"
                android:gravity="right"
                android:textColor="@color/black"
                android:layout_alignParentRight="true"
                android:layout_toLeftOf="@+id/souscarte_element_prixT"
                android:paddingRight="5dp"/>
            <!--  price food -->
             <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:id="@+id/souscarte_element_prixT"
                android:gravity="right"
                android:textColor="@color/black"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:paddingRight="5dp"/>
    </RelativeLayout>
    </FrameLayout>

这个渲染在这里: enter image description here

问题出现在红框(图片上):当我有一个很大的内容(很多单词)时,第二个价格(在底部)将自己置于底部,文本介于第一个价格和第二..

我想知道如何让它保持在第一价格的底部,谢谢!

4 个答案:

答案 0 :(得分:1)

请检查一下。 希望这对你有所帮助。

<?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="wrap_content"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" >
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="17dp"
        android:layout_marginRight="17dp"
        android:background="#FFFFFF"
        android:orientation="horizontal"
        android:padding="5dip" >
        <LinearLayout
            android:id="@+id/list_linearLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.2"
                android:orientation="vertical" >
                <TextView
                    android:id="@+id/souscarte_element_titleT"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp"
                    android:textColor="#000000"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/souscarte_element_descT"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp"
                    android:textColor="#000000" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.8"
                android:orientation="vertical" >
                <TextView
                    android:id="@+id/souscarte_element_promoT"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingRight="5dp"
                    android:textColor="#000000"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/souscarte_element_prixT"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingRight="5dp"
                    android:textColor="#000000"
                    android:textStyle="bold" />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
</FrameLayout>

答案 1 :(得分:0)

您已为第二个价格设置layout_align_parent_bottom="true",这就是它固定在底部的原因。将其更改为layout_below="@+id/souscarte_element_promoT"

请注意,RelativeLayout允许其子项重叠,因此如果您不小心如何安排孩子,它会将孩子吸引到其他孩子之上。

答案 2 :(得分:0)

您可以在主布局中嵌套两个布局......

一个用于文本,另一个用于价格

这样的事情:

<LinearLayout 
    android:orientation="horizontal" >
    <LinearLayout       <!--For the texts-->
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView >
        <TextView >

    </LinearLayout>

   <LinearLayout <!--For the prices-->
        android:orientation="vertical" >

        <TextView >
        <TextView >

    </LinearLayout>

</LinearLayout>

答案 3 :(得分:0)

由于TextView不提供此功能,因此这是一件非常难以实现的事情。

然而,它仍然有可能。

你可以扩展TextView,当它应该显示文本时(不知道在哪种方法中),你可以测量最后2行文本(可能使用Paint.measureText),以便知道在哪里放置价格textView。

我说2因为第一个会给你Y坐标,最后一个会告诉你它是否会换行以防你放置文本视图,所以你需要在Y坐标上添加额外的。

另一种可能的解决方案是将价格作为文本放在描述TextView中。在此解决方案中,您还需要检查最后一行,以便了解是否需要创建新行或使用当前行,并且需要知道要放置多少空格。

无论如何,正如其他人所提到的,一个简单的方法就是简单地将价格放在文本之下。