6

我有以下布局...

<?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

我也想让预加载器垂直居中,怎么了?

4

5 回答 5

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>

我不建议将重力设置为最顶部的线性布局,因为如果您更改列表或添加某些内容,可能会发生有趣的事情。

于 2012-06-06T18:33:20.160 回答
1

您正在尝试做的事情似乎有些问题。布局中进度条顶部的 ListView 可以根据其内容具有可变高度。因此,使用线性布局无法确保进度条保持在屏幕中心。

您可能希望查看ProgressDialog 类,该类将在您将数据加载到后台列表中时显示进度对话框。

或者,您可以使用 RelativeLayout 作为顶级布局并android:layout_centerInParent="true"为 ProgressBar 指定属性,从而使 ProgressBar 和 ListView 重叠

于 2012-06-06T18:41:51.113 回答
1

那是因为您使用的是 a LinearLayout,我建议您使用 aRelativeLayout 并让属性中心layout_centerVertical像这样使用:

<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"/>
于 2012-06-06T18:16:35.243 回答
0

android:gravity="center"在您的父 LinearLayout 中设置。

<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">
于 2012-06-06T18:18:33.507 回答
0

我不知道你占用了多少空间,但如果你想真正定义你想要的项目Listview,你可能想使用 a<RelativeLayout>而不是。<LinearLayout>x

于 2012-06-06T18:16:55.090 回答