2012-06-06 16 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

मैं के लिए preloader चाहते लंबवत भी केंद्रित हो, क्या गलत है?

+0

एंड्रॉयड कर सकते हैं: layout_width = "wrap_content" <--- की स्थापना कि – 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

फ़्रेमलेआउट को मूल लेआउट के रूप में बनाना न भूलें, अन्यथा अन्य भाई लेआउट छुपाए जाएंगे – NightFury

0

thats क्योंकि आप एक 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

मैं नहीं जानता कि अंतरिक्ष कितना अपने सूची दृश्य ले जा रहा है लेकिन आप <LinearLayout> के बजाय <RelativeLayout> का उपयोग करना चाह सकते हैं यदि आप वास्तव में यह परिभाषित करना चाहते हैं कि आप x आइटम कहां चाहते हैं।

उम्मीद है कि इससे मदद मिलती है।

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

ध्यान दें कि कि का उपयोग कर fill_parent करने की कोशिश सूची को लेआउट में भी केंद्रित किया जाएगा। – Raykud

1

आप जो करने की कोशिश कर रहे हैं उसके साथ कुछ समस्या है। आपके लेआउट में प्रगति पट्टी के शीर्ष पर ListView की सामग्री के आधार पर एक परिवर्तनीय ऊंचाई हो सकती है। इसलिए, यह सुनिश्चित करना संभव नहीं है कि प्रगति पट्टी रैखिक लेआउट का उपयोग कर स्क्रीन के केंद्र में रहती है।

आप ProgressDialog कक्षा को देखना चाहते हैं जो पृष्ठभूमि में डेटा लोड करते समय एक प्रगति संवाद दिखाएगा।

वैकल्पिक रूप से, आप RelativeLayout शीर्ष स्तर लेआउट के रूप में उपयोग करके ProgressBar और ListView ओवरलैप बनाने के लिए और ProgressBar के लिए android:layout_centerInParent="true" विशेषता निर्दिष्ट

+0

मैंने पहले ही इसका उपयोग किया है, वे बदसूरत हैं। – johnblanco