Indeterminado Horizontal ProgressBar ABAJO ActionBar usando AppCompat?
He estado buscando respuestas sobre cómo colocar la barra de progreso horizontal indeterminada debajo de la barra de acción usando AppCompat. Soy capaz de hacer que aparezca la barra de progreso horizontal, pero está en la parte superior de la barra de acción. Quiero que debajo de / debajo de la barra de acción tipo de cómo gmail lo hace (excepto sin el pull para actualizar).
Utilicé el siguiente código para que aparezca la barra de progreso:
- Android Appcompat v21 - utilizar el estilo antiguo del hilandero
- Appcompat v21 Elevación de la barra de herramientas pre-lollipop
- Android: CoordinatorLayout y SwipeRefreshLayout
- Android - onAttach (Context) no se llama a la API 23
- No se puede obtener AppCompat ActionBar / Toolbar para convertirse en una superposición
supportRequestWindowFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main_activity); setSupportProgressBarIndeterminate(Boolean.TRUE); setSupportProgressBarVisibility(true);
Pero esto coloca la barra de progreso horizontal en la parte superior de la barra de acción. Alguien sabe cómo colocar la barra de progreso debajo de la barra de acción?
- Widget no teñido en Lollipop
- App no se encuentra en styles.xml en la carpeta res
- El menú de la barra de herramientas menuitem es mayúscula
- Cómo personalizar el color de AppCompatButton
- Android: ActionBar no cambia el tamaño con onConfigurationChanged (AppCompat)
- Barra de herramientas que no aparece en los dispositivos pre lollipop
- AppCompat v7 r21 devolviendo error en values.xml?
- Error al importar un proyecto de Eclipse en Android Studio
Me enfrenté a un problema similar recientemente y lo resolví creando mi propia barra de progreso y luego alineándolo manipulando getTop () de la vista de contenido.
Así que primero crea tu barra de progreso.
final LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 20); //Use dp resources mLoadingProgressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); mLoadingProgressBar.setIndeterminate(true); mLoadingProgressBar.setLayoutParams(lp);
Añadir a la ventana (vista de la decoración)
final ViewGroup decor = (ViewGroup) getWindow().getDecorView(); decor.addView(mLoadingProgressBar);
Y con el fin de llegar a su posición correcta Im utilizando un ViewTreeObserver
que escucha hasta que la vista se ha establecido (aka el View.getTop () isnt 0).
final ViewTreeObserver vto = decor.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { final View content = getView(android.R.id.content); @Override public void onGlobalLayout() { int top = content.getTop(); //Dont do anything until getTop has a value above 0. if (top == 0) return; //I use ActionBar Overlay in some Activities, //in those cases it's size has to be accounted for //Otherwise the progressbar will show up at the top of it //rather than under. if (getSherlock().hasFeature((int) Window.FEATURE_ACTION_BAR_OVERLAY)) { top += getSupportActionBar().getHeight(); } //Remove the listener, we dont need it anymore. Utils.removeOnGlobalLayoutListener(decor, this); //View.setY() if you're using API 11+, //I use NineOldAndroids to support older ViewHelper.setY(mLoadingProgressBar, top); } });
Espero que tenga sentido para ti. ¡Buena suerte!
- Android: Descarga de un archivo protegido por autenticación NTLM
- Transmisión de audio MP3 mediante comunicación de socket mediante OpenSL ES en Android