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>
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"
.
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
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.
Ajouter ce qui suit:
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Essayez de donner à la barre de progression un layout_weight de 1
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>