2013-01-21 5 views
51

어떻게 레이어 목록이 작동하는지 이해할 수 없습니다. 나는 documentation with some examples 공식을 읽었지만 예상대로 나를 위해 일하지 않습니다. 나는 1dp로 패딩되어야하는 4 개의 정사각형을 원하지만, 예상과 같은 것은 없다.Android의 이해하기 <layer-list>

My suares
(잘못된 색상이 중요하지 않음)
당신이 볼 수 있듯이 크기가 완전히 잘못이며, 패딩이 누락 : 여기에 500 %로 조정 스크린 샷입니다. 폭/높이, 오른쪽/왼쪽/위쪽/엉덩이와 같은 실제 값을 설정하여 안드로이드가 원하는 점을 얻도록 노력했습니다.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="9dp" 
       android:height="9dp"/> 
      <solid android:color="#f000"/> 
     </shape> 
    </item> 

    <item android:top="1dp" android:left="1dp" android:bottom="5dp" android:right="5dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp" 
       android:height="3dp"/> 
      <solid android:color="#f00"/> 
     </shape> 
    </item> 
    <item android:top="1dp" android:left="5dp" android:bottom="5dp" android:right="1dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp" 
       android:height="3dp"/> 
      <solid android:color="#0f0"/> 
     </shape> 
    </item> 

    <item android:top="5dp" android:left="1dp" android:bottom="1dp" android:right="5dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp" 
       android:height="3dp"/> 
      <solid android:color="#0f0"/> 
     </shape> 
    </item> 
    <item android:top="5dp" android:left="5dp" android:bottom="1dp" android:right="1dp"> 
     <shape android:shape="rectangle"> 
      <size android:width="3dp" 
       android:height="3dp"/> 
      <solid android:color="#f00"/> 
     </shape> 
    </item> 
</layer-list> 
+0

어떻게 스크린 샷을 만들었습니까? 왜냐하면 그것은 내게 절대적으로 정확한 모습을 보여주기 때문입니다 ... – OcuS

+0

저는 이클립스에서 비주얼 편집기를 가져 왔습니다. – rekire

+0

@rekire 편집기는 버그가 있습니다. 알다시피, 항상 적절한 모양을 표시하지는 않습니다. 항상 장치를 확인하십시오. –

답변

97

값을, 오른쪽 및 아래쪽 각 가장자리로부터 측정된다.

왼쪽 = 0dp, 위쪽 = 0dp, 아래쪽 = 0dp & 오른쪽 = 50dp 너비가 50dp가 아닌 (match_parent - 50dp) 너비의 사각형을 제공합니다. 따라서 "오른쪽"값이 클수록 실제로는 더 작은 사각형을 얻을 수 있습니다.

다른 값에도 동일한 내용이 적용되지만 대부분의 경우 혼동을 일으킬 수있는 "올바른"경우가 예상됩니다.

+4

html에있는 비슷한 패딩, right = 50dp는 오른쪽에 50dp의 패딩을 추가합니다. –

+0

코드에서 "top = 0dp"를 변경하는 방법은 무엇입니까? –

5

은 어느 대신 dppx를 사용하거나 10 모든 차원을 곱

여기 내 XML이다.

는 내가 정확히 이런 일이 왜 모르는 것을 인정하는 것이 부끄러워하지만 내 생각은 1dp 부동 px 값과 ImageView가 축소되고 밀도가 함께 할 수있는 뭔가가 있다는 것입니다.

전문가 않음 환영된다 : 왼쪽 상단 용

+0

당신은 맞습니다,하지만 나는 dpi 독립되고 싶습니다. rect (top, left, right, bottom)의 모든 값과 dp가 일식에서 작동하지 않는 이유에 대한 아이디어가 필요한 것과 같은 정보를 더 제공 할 수 있습니까? – rekire

+3

방금 ​​나는이 대답을 찾았습니다. 다시 px를 사용했고 다른 스크린 크기 (ldpi, mdpi, hdpi, xhdpi 및 xxhdpi) 다른 값에 사용되었습니다. – rekire