Android 如何将动态大小的视图垂直居中放置在某些文本下方
我试图在屏幕上垂直居中显示ListView。在ListView的正上方,我想显示一些文本(列表应该居中,而不是文本) 问题在于ListView具有动态变化的内容(例如,行数)。当有几行并且ListView只填充屏幕的一部分时,我希望ListView居中,上面有文本。当ListView已满并且将比屏幕大时,我希望文本显示在屏幕顶部,ListView将填充下面的剩余空间 当ListView很小时,我当前的布局(如下所示)效果很好,但是当ListView变大时,文本会从屏幕顶部弹出 在ListView增长时保持文本可见有什么建议吗Android 如何将动态大小的视图垂直居中放置在某些文本下方,android,android-layout,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>
您是否尝试将TextView中的android:layout_上面的=“@+id/list”更改为ListView中的android:layout_下面的=“@+id/title”?这应该会给你带来想要的效果。我目前看到的一个问题就在这条线上
android:layout_above="@+id/list"
最好是
android:layout_above="@id/list"
不确定这是否是罪魁祸首
编辑1:
这样做,ListView中的
android:layout\u centerVertical
被忽略,TextView和ListView只是一个接一个地放在屏幕顶部。您必须将android:layout\u centerVertical=“true”添加到TextView(当然)和ListView中。不幸的是,这不起作用,然后文本视图将在屏幕上居中显示,而列表视图(无论有多大)将被压缩到下面的空间中…我将不得不仔细阅读差异是什么,但不,这没有什么区别。谢谢你的建议+id用于为R.java创建新的资源条目,直接id用于引用已存在的现有条目。您是否可以尝试将listview代码放置在具有上述更改的textview之上。恐怕也会产生相同的结果:列表较短时可以正常工作,但是,当列表变长时,文本会被推离顶部。用一些示例代码编辑了我的答案,这些代码对我来说很好。希望能有所帮助。虽然这确实可以防止文本被长列表截断,但当列表变短时,它不会垂直居中于列表视图的中心。
<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" />