2012-04-30 10 views
9

Ho il seguente file di layout:Perché layout_marginBottom viene ignorato quando si utilizza wrap_content?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#FF0000" > 

<RelativeLayout 
    android:id="@+id/usericon_img" 
    android:layout_width="73.3334dp" 
    android:layout_height="70.6667dp" 
    android:layout_marginBottom="2.6667dp" 
    android:layout_marginLeft="3.3334dp" 
    android:layout_marginTop="2.6667dp" 
    android:background="#FFFFFF" /> 
</RelativeLayout> 

sull'emulatore (ho testato su un dispositivo reale e sembra lo stesso) il layout simile a questo: enter image description here

La mia domanda è: perché non ho un margine rosso sotto il layout bianco? So che se cambio il layout esterno per:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="76dp" 
android:background="#FF0000" > 

Prendo quello che voglio, ma perché non lo fa wrap_content funziona correttamente?

risposta

6

Nella documentation:

Per misurare le sue dimensioni, una vista tiene conto del suo riempimento.

Se non sbaglio significa che il margine non viene aggiunto alla dimensione. Ciò significa che wrap_content funziona correttamente ma non tiene conto del margine.

Solo una breve domanda: perché si utilizzano valori come 70.6667dp?

+0

Ho usato 70.6667 perché voglio una dimensione di 106 pixel su uno schermo hdpi. – Toorop

+0

se i margini vengono ignorati, perché ho lasciato e margini superiori? – Toorop

+1

provare a usare il padding invece – Ahmad

Problemi correlati