2010-08-23 17 views
66

Mi aplicación necesita crear un pequeño progressBar programáticamente. ProgressBar no tiene un método para establecer el estilo (quiero una pequeña progressBar de ). El constructor puede tomar un AttributeSet, sin embargo, es una interfaz y requiere que implemente un conjunto de funciones. ¿Hay alguna forma de para establecer el estilo progressBar pequeño? (No puedo usar XML para crear progressBar)¿Cómo crear un ProgressBar programmatically?

Respuesta

159

La mayoría de las veces, si proporcionas manualmente un AttributeSet, tienes que usar uno de los de Android. Afortunadamente, han expuesto el conjunto de atributos que describe una pequeña barra de progreso. Utilizar este código:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall); 
+0

Esto hace que la barra de progreso parezca amarilla y antigua en lugar de azul delgada (nueva). –

+6

@kilaka solo para futura referencia, cambie theroid.R.attr.progressBarStyleSmall a android.R.attr.progressBarStyleHorizontal para el nuevo :) – ElaGorilaki

+1

@BabyGorilla Y funciona progressBarStyleHorizontal en toda la versión de Android ?! –

9

Crear un archivo XML de disposición en res/directorio de diseño con barra de progreso deseado containig todos los atributos que necesita:

<?xml version="1.0" encoding="utf-8"?> 
<ProgressBar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" ... /> 

siguiente en la clase de actividad que se pueda crear el objeto ProgressBar de ese diseño:

LayoutInflater inflater = getLayoutInflater(); 
    ProgressBar bar = (ProgressBar) inflater.inflate(R.layout.small_progress_bar, null); 

donde R.layout.small_progress_bar enlaces a su archivo xml diseño.

¿Todavía no puede usar el archivo xml?

+123

dijo programáticamente. –

+0

En lugar de inflar manualmente, puede configurar su vista de contenido en esta barra de progreso y cambiar el diseño una vez que se carguen los datos. – amalBit

-3

código completo para añadir barra de progreso mediante programación

private ProgressDialog mProgressDialog; 
    mProgressDialog = new ProgressDialog(this); 
    mProgressDialog.setMessage("Signing........"); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    mProgressDialog.setCancelable(false); 

llamada a continuación el método para mostrar la barra

mProgressDialog.show(); 

llamada de abajo para ocultar la barra de

mProgressDialog.dismiss(); 
+1

Aunque similar, esto es un ProgressDialog, no un ProgressBar. El OP puede no querer un diálogo para su indicador de progreso. – Parker

+0

Este ProgressDialog ahora está en desuso en Android 26 –