我有以下布局......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_generic_portrait">
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/issue_list_item_background_normal"
android:listSelector="@drawable/issue_background_selector"
android:divider="@drawable/separator"
>
</ListView>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:id="@+id/preloader"
style="@android:style/Widget.ProgressBar.Large"/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"/>
</LinearLayout>
它看起来像这样...... http://i.stack.imgur.com/Ra5c6.png
我希望预加载器也能垂直居中,出了什么问题?
答案 0 :(得分:12)
不知何故,layout_gravity运行不正常。 您需要做的是将progress_bar嵌套在linear_layout中,并将该布局的重力设置为居中,如下所示:
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/preloader"
style="@android:style/Widget.ProgressBar.Large"/>
</LinearLayout>
我不建议将引力设置为最顶部的线性布局,因为如果更改列表或添加内容,可能会发生有趣的事情。
答案 1 :(得分:1)
那是因为您使用的是LinearLayout
,我建议您使用RelativeLayout
并使用layout_centerVertical
这样的attibute中心:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:id="@+id/preloader"
style="@android:style/Widget.ProgressBar.Large"/>
答案 2 :(得分:1)
您尝试做的事情似乎有些问题。布局中进度条顶部的ListView可以根据其内容具有可变高度。因此,无法使用线性布局确保进度条保持在屏幕中心。
在将数据加载到后台列表中时,您可能希望查看将显示进度对话框的ProgressDialog类。
或者,您可以使用RelativeLayout作为顶级布局来使ProgressBar和ListView重叠,并为ProgressBar指定android:layout_centerInParent="true"
属性
答案 3 :(得分:0)
我不知道您的Listview占用了多少空间,但如果您想真正定义x项目的位置,则可能需要使用<RelativeLayout>
代替<LinearLayout>
。
希望这有帮助。
答案 4 :(得分:0)
在您的父级LinearLayout中设置android:gravity="center"
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent">