Пользовательский вид с возможностью рисования фона списка слоев отображает черный экран

Я пытаюсь создать собственное представление 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)


Для желающих нашел решение.

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

В конце концов, рисование списка слоев вообще не требуется. Вместо этого добавьте определение заливки 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>
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