Pregunta ¿Cómo se lee el margen de ImageView programáticamente?


Tengo un ImageView que está escrito en un archivo de diseño y se ve así

<LinearLayout 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">

        <ImageView android:id="@+id/news_image" 
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_marginLeft="18dip"
            android:layout_marginRight="18dip"
            android:background="#aaaaaa" />

</LinearLayout>

¿Cómo puedo leer el atributo android: layout_marginLeft en mi Actividad?

Intenté este siguiente código pero LayoutParams de mi ImageView no tiene ningún miembro de margen (como por ejemplo LinearLayout.LayoutParams tiene).

ImageView imageView = (ImageView)findViewById(R.id.news_image);
LayoutParams lp = imageView.getLayoutParams();

int marginLeft = lp.marginLeft; // DON'T do this! It will not work 
                                // cause there is no member called marginLeft

Alguna sugerencia de cómo obtener el margen de una ImageView?

¡Gracias!


11
2018-02-03 10:29


origen


Respuestas:


tienes que lanzar el LayoutParams al tipo que es específico para el diseño en el que está la vista. Es decir, siendo su vista dentro de un LinearLayout, deberás hacer lo siguiente:

ImageView imageView = (ImageView)findViewById(R.id.news_image);
LinearLayout.LayoutParams lp =
                (LinearLayout.LayoutParams) imageView.getLayoutParams();

ahora lp te permitirá acceder margin* campos.


25
2018-02-03 11:21



Tu sol es el siguiente:


 LinearLayout. LayoutParams lp = (android.widget.LinearLayout.LayoutParams) imageView.getLayoutParams();

  int i=lp.leftMargin;

6
2018-02-03 11:12