Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Centrar ProgressBar mediante programación en Android

Estoy intentando centrar un ProgressBar programmatically usando el siguiente:

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

La configuración de tamaño parece funcionar bien, pero el ProgressBar no se centra en el diseño existente (definido por xml con un diseño relativo). ¿Hay algo obviamente mal aquí?

El XML es el siguiente:

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

Es decir, es sólo un diseño relativo vacío para probar con y ver si puedo conseguirlo para agregar una barra de progreso mediante programación.

Gracias.

  • ¿Cómo hacer Android ProgressBar determinado en el código?
  • Cómo personalizar una barra de progreso en Android
  • Cómo cambiar el color del círculo ProgressDialog predeterminado en android
  • Disposición personalizada de la interfaz de usuario de Android ProgressBar
  • ¿Cómo crear una barra de progreso de carga horizontal?
  • Cómo crear ProgressBar circular en android?
  • Cómo cambiar el color de progreso de la barra de progreso en Android
  • ¿Cómo puedo mostrar un círculo de actividad holo-temático?
  • 4 Solutions collect form web for “Centrar ProgressBar mediante programación en Android”

    Si quieres hacerlo programáticamente puedes hacerlo como a continuación:

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

    Escribí una clase basada en la respuesta de @ DharmarajRupakheti:

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

    Uso:

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

    Utilice su codificación en este estilo, esto le da el resultado que desea.

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

    No es necesario el XML. Puede crear la vista por código:

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(this); ProgressBar pb = new ProgressBar(this, null, android.R.attr.progressBarStyleLarge); ViewGroup.LayoutParams params = new ViewGroup.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); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.