2013-11-01 11 views
8

私はカスタムのアンドロイドビューを作成し、レイヤーリストであるバックグラウンドドロアブルを適用しようとしています。レイヤーリストの描画可能なカスタム描画で黒い画面がレンダリングされます

層リストは、二つの項目があります

  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から派生したクラスです。ビューその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" /> 

私はが見ることを期待何が白色の背景と緑の境界線との図です。 What I 実際にプロジェクトを展開するときは、黒色の背景と緑色の境界線が表示されます。

興味深いことに、Android Studioのデザイナープレビューで正しく表示されます。それは、それを黒にレンダリングするデバイスに展開するときだけです。

私はここで何かが分かりませんか?

答えて

17

興味のある方は、解決策を見つけました。

形状ドロアブルをストローク定義のみを含むものとして定義しました。他の入力がなければ、塗りつぶしの色は黒色と推測されます。

最後に、レイヤリスト描画可能なものはまったく必要ありません。代わりに、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> 
関連する問題