studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android views

programacion - Android: ¿cómo obtener un alto y ancho de una vista personalizada?



manual de programacion android pdf (7)

Acabo de obtener una solución para obtener la altura y el ancho de una vista personalizada:

@Override protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){ super.onSizeChanged(xNew, yNew, xOld, yOld); viewWidth = xNew; viewHeight = yNew; }

Está trabajando en mi caso.

Posible duplicado:
Cómo dimensionar una vista de Android según las dimensiones de sus padres

¿Cómo uso getMeasuredWidth() y getMeasuredHeight ? Siempre devuelve 0. ¿cuál es la diferencia entre this y getHeight() y getWidth() ?


Bueno, getheight obtiene la altura, y getwidth obtiene el ancho. Pero estás llamando esos métodos demasiado pronto. Si los está llamando oncreate o onresume, la vista aún no está dibujada. Tienes que llamarlo después de que se haya dibujado la vista.


La diferencia entre getHeight() y getMeasuredHeight() es que el primer método devolverá la altura real de la View , el segundo devolverá la altura del resumen de los elementos secundarios de View . En palabras más getHeight() , getHeight() devuelve la altura de la vista, getMeasuredHeight() devuelve la altura que esta vista necesita para mostrar todos sus elementos


Lo siento, esta pregunta ya fue hecha. Encontré la respuesta aquí: cómo dimensionar una vista de Android en función de las dimensiones de sus padres

@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int parentWidth = MeasureSpec.getSize(widthMeasureSpec); int parentHeight = MeasureSpec.getSize(heightMeasureSpec); this.setMeasuredDimension(parentWidth, parentHeight); super.onMeasure(widthMeasureSpec, heightMeasureSpec); }


No intentes meterlos dentro de su constructor. Intente llamarlos en el método onDraw() .


Puede usar el siguiente método para obtener el ancho y alto de la vista, por ejemplo,

int height = yourView.getLayoutParams().height; int width = yourView.getLayoutParams().width;

Esto proporciona el valor convertido de la vista que se especificó en el diseño XML.

Digamos que si el valor especificado para la altura es 53dp en XML, obtendrá el valor convertido en entero como 80.