Je ne parviens pas à arrêter un ProgressBar
. Son style est ProgressBarStylesmall
. Comment puis-je démarrer et arrêter un petit ProgressBar
circulaire?
Par défaut, vous pouvez rendre progressBar visible et le masquer lorsqu'il n'est pas utilisé comme ceci:
progressBar.setVisibility(View.GONE);
Si vous voulez le contrôler par programme, vous pouvez y parvenir avec:
progressBar.setVisibility(View.VISIBLE); //to show
progressBar.setVisibility(View.GONE); // to hide
Vous pouvez même aller avec ProgressDialog:
private ProgressDialog progressDialog;
...
public void showProgressDialog() {
if (progressDialog == null) {
progressDialog = new ProgressDialog(PhotographerDetailActivity.this);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
}
progressDialog.setMessage("your message");
progressDialog.show();
}
public void dismissProgressDialog() {
if (progressDialog != null ) {
progressDialog.dismiss();
}
J'espère que cela vous aidera.
Vous aurez besoin de gérer AsyncTasks pour cela.
/*
* We set the visibility to true. If it was already visible
* there's no need of doing this but we do it for the sake of readability.
*/
final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1);
progressBar.setVisibility(View.VISIBLE);
new AsyncTask<Void,Void,Void>(){
//The variables you need to set go here
@Override
protected Void doInBackground(final Void... params){
// Do your loading here. Don't touch any views from here, and then return null
return null;
}
@Override
protected void onPostExecute(final Void result){
// Update your views here
progressBar.setVisibility(View.GONE);
}
}.execute()
Je ne sais pas si cela aide, mais vous pouvez utiliser un ProgressDialog
. Supposons que vous avez une ProgressDialog
nommée progressDialog
que vous pouvez utiliser progressDialog.dismiss();
. Assurez-vous simplement que l'instance de la ProgressDialog
que vous ignorez est la ProgressDialog
qui est réellement affichée. Vous pouvez le vérifier avec progressDialog.isShowing();
. Pour démarrer une ProgressDialog
:
progressDialog = ProgressDialog
.show(myActivityContext,
"ProgressDialog Title",
"ProgressDialog Body");
Par défaut, l’interface utilisateur ProgressDialog
est circulaire exactement comme vous en avez besoin.
masquer la barre de progression: progressBar.setVisibility(View.INVISIBLE);
affiche la barre de progression: progressBar.setVisibility(View.VISIBLE);
lire sur GONE VS. INVISIBLE ici
Nous sommes tombés sur ce sujet plus ancien et avons remarqué comment tout le monde parle de ProgressDialog. Il convient de noter que ProgressDialog est obsolète et que la classe ProgressBar doit être utilisée à la place.
À partir de la documentation Android:
Éviter ProgressDialog
Android inclut une autre classe de dialogue appelée ProgressDialog qui affiche une boîte de dialogue avec une barre de progression. Ce widget est obsolète car il empêche les utilisateurs d'interagir avec l'application pendant la progression. Si vous devez indiquer un chargement ou une progression indéterminée, vous devez suivre les directives de conception pour Progress & Activity et utiliser un ProgressBar dans votre présentation au lieu d’utiliser ProgressDialog.
Il y a une barre de progression "indéterminée", qui tourne et "déterminée", mais pas. S'en tenir à ce dernier et tout ira bien. Pour le "déterminer", ajoutez l'attribut progress à son élément xml, définissez
style="?android:attr/progressBarStyleHorizontal"
Android:indeterminate="false"