J'essaie de centrer un ProgressBar
par programme en utilisant ce qui suit:
ViewGroup layout = (ViewGroup) findViewById(Android.R.id.content).getRootView();
progressBar = newProgressBar(SignInActivity.this,null,Android.R.attr.progressBarStyleLarge);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);
Le paramètre de taille semble fonctionner correctement, mais le ProgressBar
ne se centre pas dans la disposition existante (définie par xml avec une disposition relative). Y a-t-il manifestement quelque chose qui cloche ici?
Le XML est le suivant:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".test"
Android:typeface="monospace">
</RelativeLayout>
c'est-à-dire que c'est juste une disposition relative vide pour tester et voir si je peux l'obtenir pour ajouter par programme une barre de progression.
Merci.
Si vous voulez le faire par programme, vous pouvez le faire comme ci-dessous:
RelativeLayout layout = new RelativeLayout(this);
progressBar = new ProgressBar(SignInActivity.this,null,Android.R.attr.progressBarStyleLarge);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);
setContentView(layout);
J'ai écrit un cours basé sur @ DharmarajRupakheti réponse :
public class ProgressBarHandler {
private ProgressBar mProgressBar;
private Context mContext;
public ProgressBarHandler(Context context) {
mContext = context;
ViewGroup layout = (ViewGroup) ((Activity) context).findViewById(Android.R.id.content).getRootView();
mProgressBar = new ProgressBar(context, null, Android.R.attr.progressBarStyleLarge);
mProgressBar.setIndeterminate(true);
RelativeLayout.LayoutParams params = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
RelativeLayout rl = new RelativeLayout(context);
rl.setGravity(Gravity.CENTER);
rl.addView(mProgressBar);
layout.addView(rl, params);
hide();
}
public void show() {
mProgressBar.setVisibility(View.VISIBLE);
}
public void hide() {
mProgressBar.setVisibility(View.INVISIBLE);
}
}
Usage:
mProgressBarHandler = new ProgressBarHandler(this); // In onCreate
mProgressBarHandler.show(); // To show the progress bar
mProgressBarHandler.hide(); // To hide the progress bar
Utilisez votre codage dans ce style, cela donne le résultat que vous souhaitez.
ViewGroup layout = (ViewGroup) findViewById(Android.R.id.content).getRootView();
progressBar = new ProgressBar(thisActivity,null,Android.R.attr.progressBarStyleLarge);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = new
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
RelativeLayout rl = new RelativeLayout(thisActivity);
rl.setGravity(Gravity.CENTER);
rl.addView(progressBar);
layout.addView(rl,params);