2012-06-06 75 views
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

我想預加載到也要垂直居中,出了什麼問題?

+0

的android:layout_width =「WRAP_CONTENT」 <---嘗試設置,爲FILL_PARENT – Guardanis

回答

12

不知何故layout_gravity不能正常工作。 你需要做的是窩在一個linear_layout的progress_bar和佈局的重心設置爲中心,像這樣:

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

我不建議的重心位置設定到最線性佈局,因爲你可以有搞笑如果你改變列表或添加一些東西,情況就會發生。

+0

不要忘記將FrameLayout作爲父級佈局,否則其他同級佈局將被隱藏 – NightFury

0

那是因爲你使用的是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"/> 
0

我不知道有多少空間是您的列表視圖回吐但如果您想真正定義您想要x項目的位置,則可能需要使用<RelativeLayout>而不是<LinearLayout>

希望這會有所幫助。

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"> 
+0

注意,使用甚至會使列表集中在佈局中。 – Raykud

1

你想要做什麼看起來有些問題。根據其內容,佈局中的進度條頂部的ListView可以具有可變的高度。所以,使用線性佈局不可能確保進度條保持在屏幕的中心位置。

您可能想要查看ProgressDialog類,該類將在後臺將數據加載到列表中時顯示進度對話框。

或者,您也可以使用的RelativeLayout作爲頂層佈局使進度和ListView重疊,並指定android:layout_centerInParent="true"屬性的進度

+0

我已經使用過,那些都很難看。 – johnblanco