Android RelativeLayout:如何将视图放在另一个视图上方,而不必触及?

时间:2012-08-09 22:20:10

标签: android view alignment relativelayout

我正在显示一个可以包含任意行数的ListView。我希望ListView包装内容。我还希望一些文本位于屏幕的底部,无论列表的大小如何。像这样:

What I want to happen

我尝试实现这一目标的方法如下:但是当内容很大时,它会使其看起来像左下角的图像。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/blue">
    <TextView
        android:id="@+id/fine_print"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"  
        android:layout_below:"@+id/table"
        android:gravity="center_horizontal"
      />
    <ListView 
        android:id="@+id/table" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:background="@drawable/white_box">
    </ListView>
</RelativeLayout>

并添加

android:layout_above="@id/fine_print"

到@ id / table使它看起来像右下角的图像。

What ends up happening

我怎样才能让它做我想做的事?

3 个答案:

答案 0 :(得分:3)

这看起来有点奇怪,但这是我如何运作的。由于底部的文字大小为“8dip”,并根据屏幕方向占据1或2行,我在列表下方放置了“16dip”的填充。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/blue">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/details_wrapper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:paddingBottom="16dip">
        <ListView 
            android:id="@+id/table" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:background="@drawable/white_box">
        </ListView>
    </LinearLayout>

<TextView
    android:id="@+id/fine_print"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"  
    android:gravity="center_horizontal"
  />
</RelativeLayout>

仍然愿意接受关于使这种清洁工的建议。

答案 1 :(得分:2)

回答主题:view.bringToFront();

您也可以尝试使用xml:android:translationZ="10dp"

答案 2 :(得分:1)

我认为您只需添加TextView类似

的内容即可解决您的问题

android:layout_below:"@+id/table"

如果有效,请告诉我。