2013-11-01 27 views
8

我想構建一個自定義的Android視圖,並應用一個層疊列表的背景繪製。自定義視圖與層列表背景可繪製呈現黑屏

層列表有兩個條目:

  1. 甲背景色(白色)
  2. 一個簡單的形狀繪製,其與倒圓的角部的描邊矩形

這裏的可繪製的xml :

<?xml version="1.0" encoding="utf-8"?> 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:color/white"/> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle"> 
      <corners android:radius="1dp" /> 
      <stroke 
       android:width="2dp" 
       android:color="@color/background_green" /> 
     </shape> 
    </item> 
</layer-list> 

自定義視圖是Android.view.View中的一個類derver,curr除了所需的測量過載外,沒有任何功能。

我申請視圖定義背景在活動佈局:

<view 
    android:layout_width="match_parent" 
    android:layout_height="300dp" 
    class="com.example.widget.TestView" 
    android:id="@+id/view2" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/rect_sig_cap" 
    android:layout_margin="20dp" /> 

期待看到的是一個白色的背景和一個綠色邊框的視圖。什麼我實際上看到我部署項目時是一個黑色背景和綠色邊框的視圖。

有趣的是,它在Android Studio的設計器預覽中正確顯示。只有當我將它部署到一臺呈現黑色的設備時。

我在這裏錯過了一些明顯的東西嗎?

回答

17

對於那些有興趣的人,我找到了解決方案。

我已經將可繪製的形狀定義爲僅包含筆畫定義。沒有任何其他輸入,這會導致填充顏色被推斷爲黑色。

最後,根本不需要Layer-List drawable。相反,將一個solid填充定義添加到顏色透明的形狀圖層,並且它工作得很好。

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners android:radius="@dimen/corner_radius" /> 
    <stroke android:width="1dp" 
     android:color="@color/background_green" /> 
    <solid android:color="@android:color/transparent" /> 
</shape>