2011-10-24 11 views
11

Sto tentando di mostrare la barra di avanzamento al centro dello schermo, ma non viene visualizzata al centro. Di seguito è il mio layout. Cosa sto facendo di sbagliato qui? Fondamentalmente questo è un layout per mostrare l'immagine e il widget della galleria Android in cima. Quando l'utente fa clic sulle miniature, sto caricando un'immagine dal web e voglio mostrare la finestra di avanzamento mentre l'immagine si sta caricando.come impostare la barra di avanzamento di Android al centro dello schermo

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

risposta

33

Utilizzando un LinearLayout impilerà le viste verticalmente. Al momento, il tuo ImageView e ProgressBar stanno combattendo per la posizione centrata. Per questo tipo di situazione, raccomanderei sicuramente uno RelativeLayout.

Con RelativeLayout, si utilizza android:layout_centerInParent="true".

+1

O semplicemente usa un Progr ess Dialog, come raccomandato da Andro Selva (a seconda delle esigenze/preferenze dello stile) –

+2

Layout relativo ha fatto il trucco per me. Grazie mille – Chandu

2

Provare a dare la barra di avanzamento di un layout_weight di 1

+0

andando a essere d'accordo con Andro Selva su questo. La finestra di avanzamento sta per molto ba più facile lavorare con. –

+0

Grazie per i vostri commenti. Il pensiero mi aggiornerà su ciò che ho provato ad aggiungere layout_weight. per alcuni motivo per cui ha espanso la dimensione della barra di avanzamento con una brutta ruota ruotata con pixel. layout_weight è più che altro per il rapporto tra lo spazio dello schermo da allocare tra le visualizzazioni rispetto al loro posizionamento, penso: – Chandu

3

Forse si dovrebbe andare per finestra di avanzamento, in quanto credo che si sta cercando di mostrare un indicatore di avanzamento fino a quando le immagini vengono caricate per la galleria.

Questo ti consente di iniziare.

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

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

E ancora, se siete alla ricerca di un modo per fare uso del vostro progressbar stesso, allora forse si dovrebbe dare una prova alla risposta fornita da Bradley Uffner

3

Do android:gravity="center" nella radice LinearLayout. Impostare la android:visibility di tutti gli altri elementi a parte il ProgressBar-gone quando si desidera visualizzare il ProgressBar

+0

Grazie per i vostri commenti. Ho provato questo, ma avevo ancora bisogno di visualizzare AdMob AdView in modo che non funzionasse come previsto. – Chandu

+0

Questo risponderà al titolo della domanda – Thecave3

2

Add seguente:

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

So che tale questione venga risolta, ma considerando le prestazioni per la posa di vista/subviews RelativeLayout è costoso (richiede due passaggi). Se la tua gerarchia di viste è complessa, vai su Layout relativo, o se la tua vista ha solo viste semplici come sotto, vai su Layout lineare/Layout cornice.

Dalla mia esperienza, quando la mia app cresciuto, le prestazioni di interfaccia utente con la disposizione relativa di peggio, sono finiti in rielaborazione su tutti i file di layout :(Di seguito è campione per mettere una vista (ProgressView nel mio caso) esattamente il centro di vista.

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