Skip to content Skip to sidebar Skip to footer

Centering Progressbar Programmatically In Android

I'm trying to center a ProgressBar programmatically using the following: ViewGroup layout = (ViewGroup) findViewById(android.R.id.content).getRootView(); progressBar = newProgressB

Solution 1:

I wrote a class based on @DharmarajRupakheti's answer:

publicclassProgressBarHandler {
    private ProgressBar mProgressBar;
    private Context mContext;

    publicProgressBarHandler(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();
    }

    publicvoidshow() {
        mProgressBar.setVisibility(View.VISIBLE);
    }

    publicvoidhide() {
        mProgressBar.setVisibility(View.INVISIBLE);
    }
}

Usage:

mProgressBarHandler = newProgressBarHandler(this); // In onCreate
mProgressBarHandler.show(); // To show the progress bar
mProgressBarHandler.hide(); // To hide the progress bar

Solution 2:

If you want to do it programatically you can do it like below:

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);

Solution 3:

Use your coding in this style, this gives the result you want.

ViewGrouplayout= (ViewGroup) findViewById(android.R.id.content).getRootView();

progressBar = newProgressBar(thisActivity,null,android.R.attr.progressBarStyleLarge);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);

RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);

RelativeLayoutrl=newRelativeLayout(thisActivity);

rl.setGravity(Gravity.CENTER);
rl.addView(progressBar);

layout.addView(rl,params);

Solution 4:

You don't need the XML. You can create the view all by code:

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayoutlayout=newLinearLayout(this);
        ProgressBarpb=newProgressBar(this, null,
                                         android.R.attr.progressBarStyleLarge);
        ViewGroup.LayoutParamsparams=newViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        pb.setLayoutParams(params);
        layout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
        layout.addView(pb);
        setContentView(layout);
}

Post a Comment for "Centering Progressbar Programmatically In Android"