2011-02-03 5 views
11

que tienen un ImageView que se escribe en un archivo de diseño y se ve así¿Cómo se lee el margen de ImageView mediante programación?

<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?

He intentado este código siguiente 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 conseguir el margen de un ImageView?

¡Gracias!

Respuesta

25

que tiene que emitir el LayoutParams al tipo que es específica para el diseño de la vista es en Es decir, siendo su punto de vista dentro de una. LinearLayout, que tendrá que hacer lo siguiente:

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

ahora lp le permitirá acceder a margin* campos.

+0

¡Gracias! Esto funciona. No pude encontrar nada en la documentación de Android. Tal vez solo miré en los lugares equivocados. – OemerA

6

Su sol ya que es de la siguiente manera:


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

    int i=lp.leftMargin; 
Cuestiones relacionadas