Pregunta Obtener margen de una vista


¿Cómo puedo obtener el valor de margen de una Vista de una Actividad? La vista puede ser de cualquier tipo.

Después de buscar un poco, descubrí formas de obtener relleno de una vista, pero no pude encontrar nada en Margen. ¿Alguien puede ayudar?

Intenté algo así,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

Esto funciona, pero en el código anterior he asumido que la vista es una LinearLayout. Pero necesito obtener el margin atributo incluso cuando no conozco el tipo de vista.


76
2017-09-19 07:55


origen


Respuestas:


prueba esto:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

los márgenes son accesibles a través de

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

editar: quizás ViewGroup.MarginLayoutParams funcionará para ti. Es una clase base para otra LayoutParams.

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


148
2017-09-19 08:09



Tratar

ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin

Esto devolvió las ganancias correctas para mi vista al menos.

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


25
2017-10-28 09:42



ahora usa este código editado. Esto te ayudara

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin

4
2017-09-19 08:26



Como otros sugirieron, layout_margin # es el espacio entre el borde # del padre y su vista.

  • # reemplaza "Izquierda", "Derecha", "Superior" o "Inferior"

Obtener / establecer márgenes funcionó para mí con:

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();

Por supuesto, mi View era de hecho un ViewGroup y el padre también era un ViewGroup. En la mayoría de los casos, debe convertir sus parámetros de diseño en la clase de vista View LayoutParams (en este caso es ViewGroup y RelativeLayout)


2
2018-05-05 12:11