Ich kann ein ProgressBar
nicht stoppen. Sein Stil ist ProgressBarStylesmall
. Wie kann ich ein rundes kleines ProgressBar
starten und stoppen?
Standardmäßig können Sie progressBar sichtbar machen und ausblenden, wenn dies nicht erforderlich ist:
progressBar.setVisibility(View.GONE);
Wenn Sie es programmgesteuert steuern möchten, können Sie dies mit erreichen:
progressBar.setVisibility(View.VISIBLE); //to show
progressBar.setVisibility(View.GONE); // to hide
Sie können sogar mit ProgressDialog gehen:
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();
}
Ich hoffe es wird dir helfen.
Dazu müssen Sie mit AsyncTasks umgehen.
/*
* 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()
Ich weiß nicht, ob das hilft, aber Sie können ProgressDialog
verwenden. Nehmen wir an, Sie haben ProgressDialog
namens progressDialog
und können progressDialog.dismiss();
verwenden. Stellen Sie nur sicher, dass die Instanz von ProgressDialog
, die Sie abweisen, die ProgressDialog
ist, die tatsächlich angezeigt wird. Sie können es mit progressDialog.isShowing();
überprüfen. So starten Sie eine ProgressDialog
:
progressDialog = ProgressDialog
.show(myActivityContext,
"ProgressDialog Title",
"ProgressDialog Body");
Standardmäßig ist die ProgressDialog
-Benutzeroberfläche kreisförmig, so wie Sie es benötigen.
fortschrittsbalken ausblenden: progressBar.setVisibility(View.INVISIBLE);
fortschrittsbalken anzeigen: progressBar.setVisibility(View.VISIBLE);
weiterlesen GONE VS. UNSICHTBAR hier
Kam durch dieses ältere Thema und bemerkte, wie jeder über den ProgressDialog spricht. Es sei darauf hingewiesen, dass der ProgressDialog veraltet ist und stattdessen die ProgressBar-Klasse verwendet werden sollte.
Aus den Android-Dokumenten:
Vermeiden Sie ProgressDialog
Android enthält eine weitere Dialogklasse namens ProgressDialog, die einen Dialog mit einer Fortschrittsleiste anzeigt. Dieses Widget ist veraltet, da es verhindert, dass Benutzer mit der App interagieren, während der Fortschritt angezeigt wird. Wenn Sie den Ladevorgang oder einen unbestimmten Fortschritt angeben müssen, sollten Sie die Entwurfsrichtlinien für Progress & Activity und eine ProgressBar in Ihrem Layout verwenden, anstatt ProgressDialog zu verwenden.
Es gibt "unbestimmte" Fortschrittsbalken, die sich drehen und "bestimmt", aber nicht. Halten Sie sich an letzteres und Sie werden in Ordnung sein. Um es "bestimmt" zu machen, fügen Sie das progress-Attribut zu seinem xml-Element, set, hinzu
style="?android:attr/progressBarStyleHorizontal"
Android:indeterminate="false"