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).
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" />
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);
}
}
}
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.
-
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>
-
Úsalo con tu barra de progreso de esta manera.
<ProgressBar style="@style/infinite_progress_horizontal" />
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