2017-01-03 61 views
1

我創建了一個簡單的圖層列表drawable,我想用它作爲指標天氣或不是設備在線。可繪製包括一個外環和一個內圓:Android圖層列表可繪製的兩個項目繪製得不正確,尺寸錯誤

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:width="14dp" 
     android:height="14dp" 
     android:gravity="center"> 
     <shape android:shape="oval"> 
      <stroke 
       android:width="1dp" 
       android:color="@color/colorLightGray" /> 
     </shape> 
    </item> 
    <item 
     android:width="10dp" 
     android:height="10dp" 
     android:gravity="center"> 
     <shape android:shape="oval"> 
      <solid android:color="@color/colorLightGray" /> 
     </shape> 
    </item> 
</layer-list> 

enter image description here

在我的佈局XML中,可繪製似乎當我將其指定爲我的圖像視圖的源是正確的:

enter image description here

但是如果我的設備上運行的代碼,它看起來像這樣:

enter image description here

另外我必須在我的佈局中設置寬度和高度,否則圖像根本不會顯示。

問題:

  • 我有什麼做的,所以我可以在我的佈局XML使用WRAP_CONTENT的widht /高度,並在層列表配置的大小?
+0

我相信,這只是截斷,因爲可用的大小小於10dp。而不是明確的大小嚐試「match_parent」爲兩個圓和layout_margin =「4」爲內圓 – cyanide

回答

0

試試這個layerlist繪製:

<?xml version="1.0" encoding="utf-8"?> 
 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
 
    <item android:gravity="center"> 
 
     <shape android:shape="oval"> 
 
      <size 
 
       android:width="14dp" 
 
       android:height="14dp" /> 
 
      <stroke 
 
       android:width="1dp" 
 
       android:color="@color/colorLightGray" /> 
 
     </shape> 
 
    </item> 
 
    <item 
 
     android:bottom="3dp" 
 
     android:left="3dp" 
 
     android:right="3dp" 
 
     android:top="3dp"> 
 
     <shape android:shape="oval"> 
 
      <size 
 
       android:width="10dp" 
 
       android:height="10dp" /> 
 
      <solid android:color="@color/colorLightGray" /> 
 
     </shape> 
 
    </item> 
 
</layer-list>

+0

完美,謝謝。現在我可以在我的佈局中使用wrap_content並在drawable中定義實際大小:) – xxtesaxx

0

使用此:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape 
      android:shape="oval"> 
      <solid 
       android:color="@android:color/transparent"/> 
      <padding 
       android:bottom="4dp" 
       android:left="4dp" 
       android:right="4dp" 
       android:top="4dp"/> 
      <stroke 
       android:width="1dp" 
       android:color="@color/colorLightGray"/> 
     </shape> 
    </item> 
    <item> 
     <shape 
      android:shape="oval"> 
      <solid 
       android:color="@color/colorLightGray"/> 
      <size 
       android:width="10dp" 
       android:height="10dp"/> 
     </shape> 

    </item> 
</layer-list> 
+0

謝謝,但我使用了KodyTsang解決方案。你能解釋爲什麼你使用透明固體?我一直認爲,應該儘可能地防止在手機上繪製透明的東西,以節省一些處理能力 – xxtesaxx

+0

@xxtesaxx其實外圈也是實心圓圈。爲了顯示它作爲一個戒指,我用填充4dp的透明顏色,然後用1dp給中風。所以對於10dp都是灰色圓圈,上面的顏色變成透明(4dp)然後是筆畫。我希望這有幫助。 – Spartan