2013-01-21 31 views
51

Katman listelerinin nasıl çalıştığını anlamıyorum. Resmi documentation with some examples'u okudum ama beklediğim gibi çalışmıyor. 1dp ile doldurulması gereken dört kareyi istiyorum ama hiçbir şey beklendiği gibi değil.Android'i anlama <layer-list>

My suares
(yanlış renkler önemli değil)
Gördüğünüz gibi boyutu tamamen yanlış ve kenarların, eksik: İşte% 500 ölçekli bir görüntü var. Android'in istediğim noktaya ulaştığından emin olmak için genişlik/yükseklik ve sağ/sol/üst/buttom gibi gerçek değerler belirlemeye çalıştım.

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

Ekran görüntüsünü nasıl yaptınız? Çünkü bana verdiği görüntü kesinlikle doğru görünüyor ... – OcuS

+0

Görsel editörü eclipse'den aldım. – rekire

+0

@rekire Editör sadece buggy, bildiğiniz gibi, her zaman uygun şekli göstermez. Her zaman cihazı kontrol edin. –

cevap

97

değerleri, sağ ve alt kendi kenarından ölçülür.

So = 0dp, top = 0dp, bottom = 0dp & right = 50dp size (match_parent - 50dp) genişliğinde ve 50dp genişliğinde bir dikdörtgen verecektir. Bu nedenle "sağ" için daha büyük değerler aslında size daha küçük bir dikdörtgen verecektir.

Aynısı diğer değerler için de geçerli olacaktır, ancak bunlar çoğu durumda beklenildiği gibi davranacak, sadece "doğru" karışıklığa neden olabilir.

+4

Onun html gibi bir dolgu, sağ = 50dp sağa 50dp bir dolgu ekler. –

+0

herhangi bir fikirde kodda "top = 0dp" nasıl değiştirilir? –

5

Ya yerine dp ait px kullanın veya 10 bütün boyutlarını çarpın:

İşte benim xml olduğunu.

ben tam olarak bu oluyor NEDEN bilmiyorum itiraf utanıyorum ama benim tahminim bu 1dp bir yüzer px değerdir ve ImageView kadar ölçeklendirilir yoğunlukları ile ilgili bir şey olmasıdır.

Uzman cevap karşılandı :) sola, top

+0

Haklısın, ama dpi borçlu olmak istiyorum. Gerçekten rect'in tüm değerlerine (üst, sol, sağ, alt) ve dp'nin tutulmada işe yaramayacağını düşündüğü bir fikre ihtiyacım varsa, daha fazla bilgi verebilir misiniz? – rekire

+3

Bu cevabı bir kez daha buldum, nihayet px kullandım ve diğer ekranlarda (ldpi, mdpi, hdpi, xhdpi ve xxhdpi) diğer değerler için kullanıyorum. – rekire

İlgili konular