Android: Comment créer un progrès Modal « Roue » Overlay?
-
18-09-2019 - |
Question
Je voudrais montrer une superposition de progression modale « roue » sur mon point de vue.
Le ProgressDialog se rapproche, mais je ne veux pas l'arrière-plan de dialogue ou à la frontière.
J'ai essayé le réglage de la drawable d'arrière-plan de la fenêtre de dialogue:
this.progressDialog = new ProgressDialog(Main.this);
this.progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
this.progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
this.progressDialog.setCancelable(false);
this.progressDialog.setIndeterminate(true);
this.progressDialog.show();
mais en vain (à savoir regarde toujours le même sans ... Code setBackgroundDrawable).
La solution
Avez-vous vérifié cette tutoriel ? A la fin de la page, il parle de la façon de créer une boîte de dialogue personnalisée, et qui pourraient vous aider à mettre une boîte de dialogue de progression de spinner avec vos propres fonds.
Autres conseils
Je ne sais pas s'il y a une meilleure façon, mais vous pouvez obtenir la roue de spinner sur son propre en utilisant un ProgressBar et la mise à être interdeterminate. Si vous utilisez un AbsoluteLayout vous pouvez le mettre sur d'autres points de vue. Cette disposition doit démontrer cette méthode avec XML:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/AbsoluteLayout"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ProgressBar android:id="@+id/ProgressBar"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:indeterminate="true" android:indeterminateOnly="true"
android:isScrollContainer="true" android:layout_x="100dip"
android:layout_y="10dip" android:soundEffectsEnabled="true"></ProgressBar>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello"
android:layout_gravity="center_horizontal" android:gravity="center_horizontal"
android:layout_y="25dip" />
</AbsoluteLayout>
Afin de créer un progrès en plein écran sur un fond sombre que j'utilise un FrameLayout et définir la visibilité du RelativeLayout à VISIBLE lorsque cela est nécessaire ou lorsque la longue GONE opération est effectuée:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:padding="3dip" >
<!-- Your regular UI here -->
</LinearLayout>
</ScrollView>
<RelativeLayout
android:id="@+id/relativelayout_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:background="#aa000022" >
<ProgressBar
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateOnly="true" />
</RelativeLayout>
</FrameLayout>
La solution de Klarth a fonctionné pour moi, merci!
Dans mon cas, j'ai utilisé le layout_gravity pour le placement du centre de la progress_indicator, plutôt que d'utiliser les coordonnées explicites.
<ProgressBar android:id="@+id/pb"
android:layout_width="40dp"
android:layout_height="40dp"
android:indeterminate="true"
android:indeterminateOnly="true"
android:isScrollContainer="true"
android:layout_gravity="center_vertical|center_horizontal"
android:soundEffectsEnabled="false"
/>