Search code examples
androidandroid-listviewmarkupandroid-progressbar

How to place a ProgressBar inside of the ListView?


I have a ListView that is filled in AsyncTask. At run time, ListView becomes invisible, the ProgressBar is displayed in the center of the horizontal, which disappears after AsyncTask completed, and ListView is displayed again. Now it looks like this:

enter image description here

But I need to ProgressBar displayed inside of the ListView and is centered both horizontally and vertically:

enter image description here

Here is my layout markup:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_weight="1">

    <LinearLayout
            android:id="@+id/LinearHeaderProgress"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:orientation="vertical"
            android:visibility="gone">

        <ProgressBar
                android:id="@+id/HeaderProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
        </ProgressBar>
    </LinearLayout>

    <ListView
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/listView"/>
</LinearLayout>

How can I achieve this?

Thanks.


Solution

  • Try to use RelativeLayout like this,

            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >
    
            <ProgressBar
                android:id="@+id/HeaderProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true" >
            </ProgressBar>
    
            <ListView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
    
        </RelativeLayout>