web-dev-qa-db-fra.com

comment définir la barre de progression Android au centre de l'écran

J'essaie d'afficher la barre de progression au centre de l'écran, mais elle ne s'affiche pas au centre. Ci-dessous ma mise en page. Qu'est-ce que je fais mal ici? Fondamentalement, il s'agit d'une mise en page pour afficher l'image et le widget de galerie Android en haut. Lorsque l'utilisateur clique sur les vignettes, je charge une image à partir du Web et je souhaite afficher la boîte de dialogue de progression pendant le chargement de l'image.

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

L'utilisation d'une LinearLayout empilera vos vues verticalement. Pour l'instant, vos ImageView et ProgressBar se battent pour la position centrée. Pour ce type de situation, je recommanderais certainement une RelativeLayout

Avec RelativeLayout, vous utilisez Android:layout_centerInParent="true".

38
Paul Burke

Faites Android:gravity="center" dans la racine LinearLayout. Définissez le Android:visibility de tous les autres éléments en dehors de la ProgressBar sur gone lorsque vous souhaitez afficher la ProgressBar

4
500865

Vous devriez peut-être aller dans le dialogue de progression, car je pense que vous essayez de montrer un indicateur de progression jusqu'à ce que les images soient chargées pour la galerie. 

Cela vous permettra de commencer. 

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

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

Et si vous cherchez un moyen d’utiliser votre barre de progression lui-même, vous devriez peut-être essayer la réponse fournie par Bradley Uffner.

3
Andro Selva

Ajouter ce qui suit:

Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
3
Taner

Essayez de donner à la barre de progression un layout_weight de 1

2
Bradley Uffner

Je sais que cette question a reçu une réponse, mais compte tenu des performances de disposition des vues/sous-vues, RelativeLayout est coûteux (il nécessite deux passages). Si votre hiérarchie de vues est complexe, choisissez Disposition relative ou si votre vue ne contient que des vues simples comme ci-dessous, choisissez Disposition linéaire/Disposition du cadre.

D'après mon expérience, lorsque mon application a grandi, les performances de l'interface utilisateur avec la mise en page relative étaient pires et ont abouti à une retouche sur tous les fichiers de mise en page :( Voici un exemple pour placer une vue (ProgressView dans mon cas) au centre de la vue.

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