2013-01-21 4 views
51

レイヤリストの仕組みがわかりません。私は公式documentation with some examplesを読むが、それは私の期待どおりには機能しません。私は1dpで埋められるべき4つの正方形が欲しいが、何も期待どおりではない。Androidの理解について<layer-list>

My suares
(間違った色は関係ありません)
あなたが見ることができるようにサイズが完全に間違っているとパディングが不足している:ここでは500%でスケーリングスクリーンショットです。私はwidthとheight、right/left/top/buttomのような実際の値を設定しようとしました。

<?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は、(match_parent - 50dp)幅が50dp幅ではない矩形を与えます。したがって、「右」の値が大きくなるほど、実際には小さな矩形が得られます。

他の値にも同じことが当てはまりますが、これらはほとんどの場合、混乱の原因となる「正しい」ものであると予想されるように動作します。

+4

htmlのようなパディング、right = 50dpは右側に50dpのパディングを追加します。 –

+0

"top = 0dp"をどのように変更すればよいですか? –

5

はどちらかあなたの代わりにdppxを使用するか、10によってすべての次元を掛け:

は、ここに私のxmlです。

私はなぜこれが起こっている、私は正確に知らないが、私の推測では、それが1dpがフローティングpx値であり、ImageViewがスケールアップされた密度とは何かを持っていることであることを認めることを恥ずかしいです。

専門家の答えは歓迎される:)左、上、右と下のため

+0

あなたは正しいですが、私はdpi独立したりたいと思います。 rect(上、左、右、下)のすべての値と、なぜdpが日食で動作しないように見えるかといったアイデアが本当に必要な場合など、いくつかの情報を提供できますか? – rekire

+3

私はpxを使用し、他のスクリーンサイズ(ldpi、mdpi、hdpi、xhdpi、xxhdpi)の他の値に使用しました。 – rekire

関連する問題