Cuando es indeterminado progressbar viene a la biblioteca de soporte de Android


La interfaz de usuario de mis aplicaciones se construye utilizando la Biblioteca de soporte de Android, pero actualmente no hay una versión AppCompat de la barra de progreso (intederminate), que mi aplicación realmente necesita.

Preferiría no usar ninguna biblioteca de terceros para lograr barras de progreso de material design, así que me pregunto si alguien se sienta con información sobre por qué no está incluida en la biblioteca de soporte, y si hay alguna señal de que llega (y cuándo).

Author: Gabriele Mariotti, 2015-11-06

3 answers

Puede usar un ProgressBar con un estilo AppCompat.

Simplemente agregue esto en su diseño:

<ProgressBar
        style="@style/Base.Widget.AppCompat.ProgressBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:visibility="visible" />

Si desea una barra de progreso horizontal use:

  <ProgressBar
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="8dp"
        android:layout_marginTop="24dp"
        android:indeterminate="true"
        android:visibility="visible" />

Siguen las directrices oficiales .

 77
Author: Gabriele Mariotti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-23 03:19:44

Esta es una respuesta a una vieja pregunta, pero pensé que otros lectores podrían estar interesados en esta solución:

Nuevas versiones (26.1.+ ) de la Biblioteca de Soporte contiene una clase llamada CircularProgressDrawable que implementa el aspecto exacto del elemento de diseño indeterminado Material nativo. Para usar esto fácilmente en un diseño, puedes construir un MaterialProgressBar como este:

public class MaterialProgressBar extends ProgressBar{
    // Same dimensions as medium-sized native Material progress bar
    private static final int RADIUS_DP = 16;
    private static final int WIDTH_DP = 4;

    public MaterialProgressView(Context context, AttributeSet attrs) {
        super(context, attrs);

        // The version range is more or less arbitrary - you might want to modify it
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP
                || Build.VERSION.SDK_INT > Build.VERSION_CODES.O_MR1) {

            final DisplayMetrics metrics = getResources().getDisplayMetrics();
            final float screenDensity = metrics.density;

            CircularProgressDrawable drawable = new CircularProgressDrawable(context);
            drawable.setColorSchemeColors(getResources().getColor(R.color.colorPrimary));
            drawable.setCenterRadius(RADIUS_DP * screenDensity);
            drawable.setStrokeWidth(WIDTH_DP * screenDensity);
            setIndeterminateDrawable(drawable);
        }
    }
}
 3
Author: FD_,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-29 13:11:53

Solo estoy tratando de mejorar la respuesta del Sr. Gabriele Mariotti usando estilos.

  1. Escribe un estilo como este

    <style name="infinite_progress_horizontal" parent="Widget.AppCompat.ProgressBar.Horizontal">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:indeterminate">true</item>
    </style>
    
  2. Úsalo con tu barra de progreso de esta manera.

    <ProgressBar style="@style/infinite_progress_horizontal" />
    
 0
Author: Rahul Raveendran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-30 07:17:58