web-dev-qa-db-de.com

wie man die Android-Fortschrittsleiste in der Mitte des Bildschirms einstellt

Ich versuche, den Fortschrittsbalken in der Mitte des Bildschirms anzuzeigen, er wird jedoch nicht in der Mitte angezeigt. Unten ist mein Layout. Was mache ich hier falsch? Im Grunde ist dies ein Layout, um Bilder und Android-Galerie-Widget oben anzuzeigen. Wenn der Benutzer auf die Miniaturbilder klickt, lade ich ein Bild aus dem Web und möchte den Fortschrittsdialog anzeigen, während das Bild geladen wird.

<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

Mit einer LinearLayout werden Ihre Ansichten vertikal gestapelt. Im Moment kämpfen Ihre ImageView und ProgressBar um die zentrierte Position. Für diese Situation würde ich definitiv eine RelativeLayout empfehlen. 

Mit RelativeLayout verwenden Sie Android:layout_centerInParent="true".

38
Paul Burke

Android:gravity="center" in der Wurzel LinearLayout. Setzen Sie den Android:visibility aller anderen Elemente außer ProgressBar auf gone, wenn Sie die ProgressBar anzeigen möchten.

4
500865

Vielleicht sollten Sie sich für den Fortschrittsdialog entscheiden, da ich glaube, dass Sie versuchen, eine Fortschrittsanzeige anzuzeigen, bis die Bilder für die Galerie geladen werden. 

Das wird dich anfangen. 

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

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

Und wenn Sie nach einer Möglichkeit suchen, Ihren Fortschrittsbalken selbst zu verwenden, sollten Sie vielleicht die Antwort von Bradley Uffner ausprobieren

3
Andro Selva

Folgendes hinzufügen:

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

Geben Sie der Fortschrittsleiste eine layout_weight von 1

2
Bradley Uffner

Ich weiß, dass diese Frage beantwortet ist, aber angesichts der Leistung beim Erstellen von Ansichten/Unteransichten ist RelativeLayout teuer (es ist zwei Durchgänge erforderlich). Wenn Ihre Ansichtshierarchie komplex ist, wählen Sie Relatives Layout. Wenn Ihre Ansicht nur einfache Ansichten wie unten enthält, gehen Sie zu Lineares Layout/Rahmenlayout.

Nach meiner Erfahrung, als meine App gewachsen war, war die Leistung der Benutzeroberfläche mit dem relativen Layout schlechter und endete mit der Überarbeitung aller Layoutdateien :( Unten finden Sie ein Beispiel für das Setzen einer Ansicht (in meinem Fall ProgressView) genau in den Mittelpunkt.

<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