2011-02-03 16 views
11

Ho un ImageView che è scritto in un file di layout e si presenta cosìCome leggere il margine ImageView a livello di codice?

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

Come posso leggere l'attributo android: layout_marginLeft nella mia attività?

Ho provato questo seguente codice ma LayoutParams del mio ImageView non ha alcun membro di margine (come ad esempio LinearLayout.LayoutParams ha).

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 

Eventuali suggerimenti su come ottenere il margine da una ImageView?

Grazie!

risposta

25

si deve gettare la LayoutParams per il tipo che è specifico per il layout della vista è in Cioè, essendo la visualizzazione all'interno di una. LinearLayout, dovrete effettuare le seguenti operazioni:

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

ora lp vi permetterà di accedere margin* campi.

+0

Grazie! Questo funziona. Non ho trovato nulla nella documentazione di Android. Forse ho solo guardato i posti sbagliati. – OemerA

6

vostro sol perché è come di seguito:


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

    int i=lp.leftMargin; 
Problemi correlati