如何在屏幕中央设置android进度条

时间:2011-10-24 04:12:18

标签: android layout progress-bar

我正在尝试在屏幕中央显示进度条,但它不会显示在中心。下面是我的布局。我在这做错了什么?基本上这是一个布局,以显示图像和Android画廊小部件在上面。当用户点击缩略图时,我正在从网上加载图像,我想在图片加载时显示进度对话框。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/container" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:orientation="vertical">

    <Gallery android:id="@+id/gallery" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:gravity="top" />

    <ImageView android:id="@+id/actualimage" android:scaleType="fitCenter"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:visibility="gone" android:layout_gravity="center_vertical|center_horizontal|center"
        android:adjustViewBounds="true" />

    <ProgressBar android:id="@+android:id/progress_small1"
        android:layout_height="wrap_content" android:layout_width="wrap_content"
        android:visibility="visible" android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center_vertical|center_horizontal" />

</LinearLayout>

6 个答案:

答案 0 :(得分:38)

使用LinearLayout会垂直堆叠您的视图。现在,您的ImageViewProgressBar正在为中心位置而战。对于这种情况,我肯定会推荐RelativeLayout

使用RelativeLayout,您可以使用android:layout_centerInParent="true"

答案 1 :(得分:4)

android:gravity="center"根目录中LinearLayout。如果要显示android:visibility

,请将ProgressBargone之外的所有其他元素的ProgressBar设置为{{1}}

答案 2 :(得分:3)

也许您应该去进度对话框,因为我相信您正在尝试显示进度指示器,直到为图库加载图像。

这将帮助您入门。

http://www.helloandroid.com/tutorials/using-threads-and-progressdialog

http://www.androidpeople.com/android-progress-dialog-example

如果您正在寻找一种方法来利用您的进度条本身,那么也许您应该尝试一下Bradley Uffner提供的答案

答案 3 :(得分:3)

添加以下内容:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

答案 4 :(得分:2)

尝试为进度条指定layout_weight为1

答案 5 :(得分:1)

我知道这个问题已得到解答,但考虑到布局视图/子视图的性能,RelativeLayout很昂贵(需要两次通过)。如果您的视图层次结构很复杂,请选择相对布局,或者如果您的视图只有如下所示的简单视图,请选择线性布局/框架布局。

根据我的经验,当我的应用程序增长时,相对布局的UI性能更差,最终在所有布局文件上进行重新处理:(下面是放置视图的示例(在我的情况下为ProgressView)正好在视图的中心。 / p>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:orientation="vertical">
    <android.support.v7.widget.AppCompatImageView android:layout_gravity="center"  android:layout_width="match_parent"
        android:layout_height="0dp" app:srcCompat="@drawable/check" android:scaleType="fitCenter"
        android:layout_weight=".7"/>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp" android:layout_weight=".3">
        <ProgressBar android:layout_gravity="center|center_horizontal" android:indeterminateTint="@color/textColorPrimary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:indeterminate="true"/>
    </FrameLayout>

</LinearLayout>