2013-11-01 3 views
8

Я пытаюсь создать пользовательский вид Android и применить выделение фона, которое является списком слоев.Пользовательский вид с Layer-List background drawable визуализирует черный экран

Слой-лист состоит из двух элементов:

  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, что 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

Для тех, кого это касается, я нашел решение.

Я определил форму, которую можно использовать как включающую только определение штриха. Без каких-либо других входов это приводит к тому, что цвет заливки будет выведен как черный.

В конце концов, выталкиваемый список слоев не требуется вообще. Вместо этого добавьте определение заливки solid в слой с цветом Transparent, и он работает просто отлично.

<?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> 
Смежные вопросы