2011-10-24 22 views
11

Estoy tratando de mostrar la barra de progreso en el centro de la pantalla, pero no aparece en el centro. A continuación está mi diseño. ¿Qué estoy haciendo mal aquí? Básicamente, este es un diseño para mostrar la imagen y el widget de la galería de Android en la parte superior. Cuando el usuario hace clic en las miniaturas, estoy cargando una imagen de la web y quiero mostrar el cuadro de diálogo de progreso mientras la imagen se está cargando.cómo configurar la barra de progreso de Android en el centro de la pantalla

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

Respuesta

33

Usando una LinearLayout apilará sus vistas verticalmente. En este momento, su ImageView y ProgressBar están luchando por la posición centrada. Para este tipo de situación, definitivamente recomendaría un RelativeLayout.

Con RelativeLayout, usa android:layout_centerInParent="true".

+1

O simplemente use un Progr Diálogo de ess, según lo recomendado por Andro Selva (dependiendo de las preferencias/preferencias de estilo) –

+2

El diseño relativo hizo el truco para mí. Muchas gracias – Chandu

2

tratar de darle a la barra de progreso de un layout_weight 1

+0

va a tener que estar de acuerdo con Andro Selva en este caso. El diálogo de progreso va a lote ba más fáciles de trabajar. –

+0

Gracias por sus comentarios. Pensé que se actualizará en lo que he intentado añadir layout_weight. para algunos razón por la cual expandió el tamaño de la barra de progreso a la fea rotación de la rueda pixelada. layout_weight es más para la proporción del espacio de la pantalla que se asignará entre las vistas que su ubicación, creo. – Chandu

3

Tal vez hay que ir por diálogo de progreso, ya que creo que está tratando de mostrar un indicador de progreso hasta que las imágenes se cargan para la galería.

Esto le permitirá comenzar.

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

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

Y aún si usted está buscando una manera de hacer uso de su progressbar sí entonces tal vez debería darle una oportunidad a la respuesta proporcionada por Bradley Uffner

3

Haz android:gravity="center" en la raíz LinearLayout. Ajuste el android:visibility de todos los otros elementos aparte de la ProgressBar a gone cuando se quiere mostrar el ProgressBar

+0

Gracias por sus comentarios. Lo intenté pero aún necesitaba mostrar AdView de AdMob para que no funcionara como se esperaba. – Chandu

+0

Esto responderá al título de la pregunta – Thecave3

2

Agregar siguiente:

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

Sé que esta pregunta se contesta, pero teniendo en cuenta el rendimiento de la disposición de las vistas/subvistas , RelativeLayout es costoso (requiere dos pases). Si su jerarquía de vistas es compleja, vaya a Diseño relativo, o si su vista tiene solo vistas simples como las siguientes, vaya a Diseño lineal/Diseño de marco.

Desde mi experiencia, cuando mi aplicación cultiva, el rendimiento de interfaz de usuario con la disposición relativa era peor, terminaron en la reelaboración de todos los archivos de diseño :(A continuación se muestra una vista de la puesta (ProgressView en mi caso) exactamente en el centro de 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> 
Cuestiones relacionadas