2014-10-05 3 views
4

У меня есть ListView, который заполнен AsyncTask. Во время выполнения ListView становится невидимым, ProgressBar отображается в центре горизонтали, который исчезает после завершения AsyncTask и снова отображается ListView. Теперь это выглядит следующим образом:Как разместить ProgressBar внутри ListView?

enter image description here

Но мне нужно ProgressBar отображается внутри ListView и центрируется по горизонтали и по вертикали:

enter image description here

Вот мой макет разметки:

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

Как я могу это достичь?

Спасибо.

ответ

4

Попробуйте использовать RelativeLayout как это,

 <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> 
+3

Кроме того, в методе OnCreate(), установите индикатор, как пустой взгляд. 'listView.setEmptyView (findViewById (R.id.HeaderProgress));' Тогда индикатор выполнения исчезнет, ​​когда ваш список будет заполнен данными. – hfann

+0

@hfann что-то новое я узнаю сегодня, спасибо, я попробую. – Chitrang

+0

@Chitrang, спасибо, это работает! @hfann, вместо '.setEmptyView()' Я использую '.setVisibility (View.GONE);' в методе 'onPostExecute()'. –