2

Ich mag einen Fortschrittsbalken in der Mitte eine Standard-Schaltfläche erstellen, etwa so: progressbarprogressbar in der Mitte einer Taste

im XML-Layout, wenn ich die progressbar klicken, ich tue Sehen Sie, dass es dort ist, wo ich es wünsche, aber in Echtzeit kann ich es nicht sehen, es fühlt sich an, als würde es sich unter dem Knopf verstecken. android studio xml

Ich habe versucht:

  1. Ändern der Positionierung Ansicht (Taste oben/unten progressbar)
  2. unbestimmte
  3. mit ProgressBar Stil Spielen

Nichts schien Arbeits .

Hier ist meine xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/button_id" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:elevation="1dp" 
     android:text="test button" /> 

    <ProgressBar 
     android:id="@+id/progress" 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/button_id" 
     android:layout_alignTop="@+id/button_id" 
     android:layout_centerHorizontal="true" 
     android:indeterminate="true" 
     android:indeterminateTint="@android:color/holo_blue_dark" 
     android:visibility="visible" /> 

</RelativeLayout> 
+0

vielleicht, weil Sie die Farbe der Statusleiste ändern müssen – has19

+0

verschiedene Farben versuchten, vor, seine nicht. – Dus

+0

fügen Sie diese zu Ihrem Thema base style # ffff4444 # ff0099cc und versuchen Sie es erneut – has19

Antwort

6

Das Problem hängt mit elevation zusammen. In elevation zum ProgressBar

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/button_id" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:elevation="1dp" 
     android:text="test button" /> 

    <ProgressBar 
     android:id="@+id/progress" 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/button_id" 
     android:layout_alignTop="@+id/button_id" 
     android:layout_centerHorizontal="true" 
     android:indeterminate="true" 
     android:elevation="2dp" 
     android:indeterminateTint="@android:color/holo_blue_dark" 
     android:visibility="visible" /> 

</RelativeLayout> 
+1

perfekt. habe das vergessen. Nur die Erhöhung der Fortschrittsbalken brachte den Trick. sogar Gedankenerhöhung ist nur von api 21. – Dus

+1

Warum ist das Elevation Problem? Elevation löst das Problem. Vielen Dank –

0

In der Vorschau, die ProgressBar immer unsichtbar ist (zumindest für mich).

Das Problem ist, dass Sie eine Erhöhung auf Ihre Schaltfläche angewendet haben. Dies ändert die Z-Ebene einer Ansicht. Die ProgressBar befindet sich also wirklich hinter Ihrer Schaltfläche, da die ProgressBar keine Höhe hat.

Ich habe die ProgressBar eine Höhe von 3dp gegeben.

<ProgressBar 
       android:id="@+id/progress" 
       style="?android:attr/progressBarStyleSmall" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/button_id" 
       android:layout_alignTop="@+id/button_id" 
       android:layout_centerHorizontal="true" 
       android:indeterminate="true" 
       android:elevation="3dp" 
       android:indeterminateTint="@android:color/holo_blue_dark" 
       android:visibility="visible" /> 

EDIT: Sie werden besser sein, eine ProgressDialog verwenden.

ProgressDialog dialog = new ProgressDialog(this); 
dialog.setMessage("Wait..."); 
dialog.show(); 
+0

Warum sollte ich den progressdialog verwenden, wenn ich es nur elegant in der XML machen kann, ohne Code dahinter? – Dus

+0

weil ich es nicht sehr "elegant" finde. Wenn Sie Ihre ProgressBar auf sichtbar/unsichtbar setzen, ist das nicht viel weniger Code, als einen ProgressDialog anzuzeigen. – AlbAtNf