Obtener el ancho de fragmento 0 en onStart ()
Estamos utilizando biblioteca de compatibilidad de fragmentos, y estamos tratando de obtener el ancho del fragmento, agregado a FrameLayout. De acuerdo con el ciclo de vida de los fragmentos, hasta que onCreateView se ejecute, getView (). GetMeasuredWidth () devolverá 0. Sin embargo, estamos recibiendo 0 en onStart (), que viene después de onCreateView, y por lo tanto, el valor devuelto no debe ser 0.
Este es el fragmento que ancho queremos saber:
- Disposición relativa. Entre 2 artículos
- ¿Por qué findViewById (...) devuelve null?
- ¿Mantener el punto culminante del elemento seleccionado en el fragmento?
- Android - ¿Crear una aplicación con Java puro y sin XML?
- Android Imageview rellena el ancho de la pantalla
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@+id/details" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/carbon_fiber"/>
¿Por qué esta anomalía está sucediendo? Cualquier ayuda será apreciada.
- Cómo establecer algunas imeOptions mediante programación
- TextView sin ningún relleno predeterminado
- Android - Botón de radio - el botón dibujable no se muestra en Lollipop
- ¿Cómo puedo guardar un mapa de bits con onRetainNonConfigurationInstance () para la orientación de la pantalla?
- Tipo de letra personalizado
- ¿Cómo puedo descompilar archivos dex de forma programática dentro de Android?
- Transición de elementos compartidos no funciona
- Problemas de procesamiento Excepción generada durante la renderización: las matrices de color y posición deben tener la misma longitud
Similar a Actividades, las vistas en la jerarquía de vista no se han medido en Fragmento :: onStart (). Para obtener el tamaño de la vista, debe crear un OnGlobalLayoutListener y utilizarlo de la siguiente manera:
Android consigue el ancho del fragmento
Es sólo una suposición, pero de acuerdo con los desarrolladores de Android :
OnStart () hace que el fragmento sea visible para el usuario (en función de su actividad que se está iniciando).
Así que el ancho y la altura se calcularán sólo después de que su fragmento se vuelva visible.
Pero, tal vez, no estoy bien.
Me encontré con el mismo problema con una actividad. Necesitaba una de mis imágenes para mantener una proporción de 4: 6. Tan simple como pude encontrar para los fragmentos poner el código en su OnStart () para las actividades que era el OnWindowFocusChanged ()
De la investigación de esto resulta que es porque el diseño no ha "dibujado" todavía. Por lo tanto, no se han medido componentes. Hay varios otros trabajos alrededor pero esto me pareció ser las implementaciones más rápidas.
En una situación similar, usé el método post () de la clase View:
getView().post( new Runnable(){ @Override public void run(){ //do your measurements here } });
Creo que necesitas definir el android:class
con la clase de tu fragmento.
- ¿Por qué los estilos de corte personalizado aparecen en gris en lugar del color especificado?
- El lienzo de Android se congela