Персонализиран изглед със списък със слоеве фон, който може да се рисува, изобразява черен екран

Опитвам се да създам персонализиран 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, който в момента няма функционалност освен необходимите измервателни претоварвания.

Прилагам фона в дефиницията на изгледа в оформление на дейност:

<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. Едва когато го разположа на устройство, той изобразява черен.

Пропускам ли нещо очевидно тук?


person pdriegen    schedule 01.11.2013    source източник


Отговори (2)


За тези, които се интересуват, намерих решението.

Бях дефинирал чертаемата форма като включваща само дефиниция на щрих. Без никакви други входни данни, това кара цветът на запълване да бъде изведен като черен.

В крайна сметка изобщо не е необходим Layer-List drawable. Вместо това добавете 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>
person pdriegen    schedule 04.11.2013

Опитай това.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
    <color android:color="@color/white" />
   </item>
   <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>
person Zeeshan Ali    schedule 14.11.2019