2012-04-30 18 views
9

Mam następujący plik układ:Dlaczego layout_marginBottom jest ignorowany przy użyciu 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> 

na emulatorze (Przetestowałem go na rzeczywistym urządzeniu i wygląda tak samo) układ wygląda następująco: enter image description here

Moje pytanie brzmi: dlaczego nie mam czerwonego marginesu pod białym układem? Wiem, że gdybym zmienić układ zewnętrzny do:

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

dostanę to, co chcę, ale dlaczego nie wrap_content działa poprawnie?

Odpowiedz

6

W documentation:

Aby zmierzyć jego wymiary, widok bierze pod uwagę jego dopełnienie.

Jeśli się nie mylę, to znaczy, że marża nie jest dodawany do wymiaru. Oznacza to, że wrap_content działa poprawnie, ale nie uwzględnia marginesu.

Tylko krótkie pytanie: dlaczego używasz wartości takich jak 70.6667dp?

+0

Użyłem 70.6667, ponieważ chcę mieć wymiar 106 pikseli na ekranie hdpi. – Toorop

+0

jeśli marginesy są ignorowane, dlaczego mam marginesy lewy i górny? – Toorop

+1

spróbuj użyć wypełnienia zamiast: – Ahmad