如何将动态大小的视图垂直居中于某些文本下方

时间:2012-03-14 08:13:35

标签: android android-layout

我正试图在屏幕上垂直居中ListView。在ListView的正上方,我想显示一些文本(列表应该居中,而不是文本)。

问题是ListView具有动态改变的内容(例如,行数)。当行数很少且ListView只填充屏幕的一部分时,我希望ListView居中,上面有文本。当ListView已满且大于屏幕时,我希望文本显示在屏幕顶部,ListView填满下面的剩余空间。

当ListView很小时,我当前的布局(下面)效果很好,但当ListView变大时,文本会被推离屏幕顶部。

有关在ListView增长时保持文本可见的任何建议吗?

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

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF000000">

    <TextView
        android:id="@+id/title"
        android:text="Please select level pack..."
        android:textSize="20sp"
        android:textStyle="bold"
        android:padding="5dp"
        android:gravity="center"
        android:layout_above="@id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <ListView
        android:id="@+id/list"
        android:divider="#000000"
        android:cacheColorHint="#00000000"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"/>
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

您是否尝试将TextView中的android:layout_above =“@ + id / list”更改为您的ListView中的android:layout_below =“@ + id / title”?这应该会带给你想要的效果。

答案 1 :(得分:0)

我目前可以看到的一个问题是

android:layout_above="@+id/list"

理想情况下应

android:layout_above="@id/list"

不确定这是否是罪魁祸首。

编辑1:

 <TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="5dp"
    android:text="Please select level pack..."
    android:textSize="20sp"
    android:textStyle="bold" />

 <ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/title"
    android:layout_centerVertical="true"
    android:cacheColorHint="#00000000"
    android:divider="#000000" />