¿Cómo encontrar el ancho de una vista antes de que se muestre la vista? No quiero agregar una vista personalizada y tocar las dimensiones en OnChanged().¿Cómo encontrar el ancho de una vista antes de que se muestre la vista?
Respuesta
Display display = getWindowManager().getDefaultDisplay();
View view = findViewById(R.id.YOUR_VIEW_ID);
view.measure(display.getWidth(), display.getHeight());
view.getMeasuredWidth(); // view width
view.getMeasuredHeight(); //view height
Por favor, marca como resuelto ^^ –
También debes tener en cuenta que si la vista no está inflada, su ancho y alto será 0. – Joru
Tienes razón Joru. Utilicé ViewTreeObserver y resolví mi problema. Gracias a todos los que intentaron responder. –
@dmytrodanylyk - creo que va a devolver la anchura & altura que 0 por lo que es necesario utilizar lo siguiente
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentview = inflater.inflate(R.layout.YOURLAYOUTNAME, null, false);
contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int width = contentview.getMeasuredWidth();
int height = contentview.getMeasuredHeight();
Se le dará altura correcta & ancho.
Eso es lo que necesito para determinar si debo comenzar una nueva fila de casillas de verificación, primero haciendo que sea una sola línea y luego evitar el desbordamiento calculando el ancho ... perfecto gracias. viniendo de -> http://stackoverflow.com/a/24054428/1815624 – CrandellWS
Debe usar OnGlobalLayoutListener
, que se solicita para cambios en la vista, pero antes de que se dibuje.
costumView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
costumView.getWidth();
}
});
me gusta utilizar esta técnica como por my answer on a related question:
Publica ejecutable desde onCreate()
que se ejecutará cuando el punto de vista ha sido creado:
contentView = findViewById(android.R.id.content);
contentView.post(new Runnable()
{
public void run()
{
contentHeight = contentView.getHeight();
}
});
Este código se ejecutará en el El subproceso principal de interfaz de usuario, después de que onCreate()
haya finalizado.
Esta es la mejor manera ...... TRABAJO !!!
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (fondo_iconos_height==0) { // to ensure that this does not happen more than once
fondo_iconos.getLocationOnScreen(loc);
fondo_iconos_height = fondo_iconos.getHeight();
redraw_function();
}
}
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
view.measure(size.x, size.y);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
yourView.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int yourView= m_hidableRowContainer.getMeasuredHeight();
Eso es todo.
'medida' toma un par de constantes enteras' View.MeasureSpec', no constantes de param de diseño. – Tom
- 1. ¿Crea una vista que muestre la cantidad de nodos?
- 2. Iniciar una vista de inicio de sesión antes de que se muestre el controlador de la barra de pestañas
- 3. ¿Es posible que una vista muestre una imagen web sin guardarla antes en un archivo?
- 4. ¿Actualizar vista de lista para que muestre el índice seleccionado?
- 5. ¿Cómo obtengo que el Explorador de Windows muestre una vista previa de mis archivos en la vista 'miniatura'?
- 6. cómo ejecutar el script greasemonkey antes de que se muestre el contenido de la página?
- 7. ¿Cómo calculo el ancho óptimo de la vista de título?
- 8. ¿Cómo colocar un formulario antes de que se muestre?
- 9. Ember.js: ¿Cómo conecto Ember.CollectionView después de que se muestre cada vista secundaria?
- 10. Cómo configurar el zoom/ancho inicial para una vista web
- 11. midiendo una vista antes de representarla
- 12. ancho de la vista de cuadrícula boundfield
- 13. Vista eliminada antes de cargar
- 14. ¿Cómo configurar el Explorador de paquetes de Eclipse para que se muestre como la vista de paquete de IntelliJ IDEA?
- 15. ¿Se puede cargar una vista dividida dentro de la vista de detalle de otra vista dividida?
- 16. Cómo obtener el ancho del contenedor en el que se agrega mi vista en Android
- 17. Android: Medir el tamaño de la vista antes de representar
- 18. Alerta de Javascript carga antes de que la página muestre
- 19. UIViewController impide que la vista se descargue
- 20. No se puede encontrar la vista de ViewModel
- 21. ¿Cuánto tiempo antes de que se muestre una revisión de la aplicación en iTunes Connect?
- 22. Evite que una vista de texto multilínea se expanda innecesariamente a su ancho máximo
- 23. Cómo evitar que la vista adicional muestre un código de acceso al utilizar Google OAuth 2.0
- 24. ¿Cómo establecer el ancho de la fuente en una vista de texto de Android?
- 25. Pyqt: ¿Cómo maximizar el ancho de la columna en una vista de tabla?
- 26. Configuración del ancho de columna en la Vista de tabla
- 27. ¿Hay un control WPF que muestre una lista de archivos en una vista tipo Explorer?
- 28. ¿Cómo hago para que Visual Studio muestre siempre la vista Fuente en lugar de la Vista Diseño al presionar F7 desde una página de código subyacente?
- 29. Configuración del ancho de la vista de texto en LinearLayout
- 30. Mostrar vista antes de mostrarle UITabBar
¿qué es exactamente lo que quieres? describe más –