Programáticamente Creado Android ProgressBar (Círculo) Invisible En Xoom (Trabaja en Cualquier Parte!)
El problema
Estoy teniendo un problema extraño que no puedo entender y necesito otros ojos para mirar. He creado dinámicamente una opinión de ProgressBar y trabaja en una variedad de dispositivos y de AVDs excepto mi Motorola Xoom.
Capturas de pantalla
Todas las capturas de pantalla tienen el nombre del dispositivo por encima de ellos y se han reducido en torno al 50% de lo que agarró a través de la ADT, excepto para el Nexus 10, que es el 25% debido a su alta resolución. El fondo rojo para el ProgressBar se agrega para fines de depuración para mostrar que la vista está allí y visible. Agregué el acolchado izquierdo y superior para centrarlo.
- Importar todas las importaciones en eclipse a la vez?
- aceleración de hardware webview slide-in animación parpadeo en ICS
- ¿Cómo abrir diferentes actividades con mi lista?
- Editar texto que no toma el fondo como transparente
- Bloqueo de hilo principal de Android que bloquea hilo de WebView
Las capturas de pantalla a continuación comienzan con el Xoom donde no funciona y seguido por Nexus 10 (AVD), Nexus 7, Galaxy Nexus y HTC Droid Incredible demostrando que funciona en cualquier otro lugar. Después de los disparos voy a añadir mi código.
Motorola Xoom no funciona
Barra de progreso no funciona! Pero tenga en cuenta que la vista es visible (vemos el fondo rojo).
Funcionando bien en otros dispositivos
El progreso del círculo es visible en todos estos dispositivos.
Simulado Samsung Nexus 10
ASUS Nexus 7
Samsung Galaxy Nexus
HTC Droid Incredible
Ahora el código
Esto crea la vista principal que lo contiene:
RelativeLayout discoverListLayout = new RelativeLayout(mContext); discoverListLayout.setLayoutParams(params); discoverListLayout.addView(mDiscoverList);
MDiscoverList es una vista de lista que se muestra en última instancia. La ProgressBar se carga en la parte superior hasta que se carga la lista.
Ahora crea y configura la barra de progreso. Configurar el relleno onGlobalLayout porque de lo contrario los objetos tienen 0 ancho y altura.
mDiscoverLoading = new ProgressBar(mContext); params.height = ViewPager.LayoutParams.WRAP_CONTENT; params.width = ViewPager.LayoutParams.WRAP_CONTENT; mDiscoverLoading.setLayoutParams(params); mDiscoverLoading.setIndeterminate(true); discoverListLayout.addView(mDiscoverLoading); ViewTreeObserver vto = mDiscoverLoading.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @SuppressWarnings("deprecation") @Override public void onGlobalLayout() { if (mDiscoverList.getCount() > 0) { processLoadedList(true); } else { mDiscoverLoading.setBackgroundColor(getActivity().getResources().getColor(R.color.stitchoid_red)); mDiscoverLoading.setPadding((getView().getWidth() / 2) - (mDiscoverLoading.getWidth() / 2),(getView().getHeight() / 2) - (mDiscoverLoading.getHeight()), 0, 0); } ViewTreeObserver obs = mDiscoverLoading.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); } });
Así que de nuevo todo funciona como un campeón excepto en el Motorola Xoom !? Estaría agradecido por cualquier idea o sugerencia para ayudar a resolver este problema. Por favor, hágamelo saber si debo proporcionar cualquier información adicional.
¡Muchas gracias!
* Adición: Una cosa extraña de la nota que es probablemente no muy relevante pero apenas en caso de que: si fijo el ancho de ProgressBar a match_parent (y no agrega el relleno del ancho) también trabaja en cualquier parte pero entonces en el Xoom demuestra pero Está distorsionada ya que se extiende hasta el ancho (sólo xoom).
- GSON / Jackson en Android
- Implementar seguridad a nivel de firma en los servicios de Android con más de una firma permitida
- FileOutputStream lanza FileNotFoundException al desabrochar
- ¿Cómo diseñar botones?
- ¿Cómo puede el puerto AsyncTask de Android a Java?
- No se puede agregar gdx-tools al proyecto libgdx gradle
- Android ContentProvider getType () llamado cuando y por qué
- IndexOutOfBoundsException: charAt: 0> = longitud 0 en algunas versiones de Android
Honestamente no sé cómo o por qué haría una diferencia.
Pero intente usar RelativeLayout.CENTER_IN_PARENT para obtener su ProgressBar en el centro de la pantalla, en lugar de configurar manualmente el relleno superior e izquierdo para que sea la mitad del tamaño de la pantalla.
Así que en lugar de:
mDiscoverLoading.setPadding((getView().getWidth() / 2) - (mDiscoverLoading.getWidth() / 2),(getView().getHeight() / 2) - (mDiscoverLoading.getHeight()), 0, 0);
utilizar
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.CENTER_IN_PARENT); mDiscoverLoading.setLayoutParams(lp);
Tenga en cuenta que hay varias "versiones" diferentes del objeto LayoutParams, debe asegurarse de que RelativeLayout.LayoutParams
es el que importa ya que su padre es un RelativeLayout en este caso.
Realmente no podría decirte lo que está causando el relleno para ser buggy en el Xoom, pero esta es una manera alternativa que usted puede conseguir el ProgressBar al centro, que parece no ser afectado por cualquier error que está causando el problema en el Xoom
- Cómo cambiar el color de los títulos de los gráficos
- ¿Puede alguien explicarme la magia detrás de FindViewById (1) o FindViewById (2)?