Подтвердить что ты не робот

Добавление цвета фона и радиуса рамки к макету

Я хочу создать макет с закругленными углами и заполненный цветной фон.

Это мой макет:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="210dp"
    android:orientation="vertical"
    android:layout_marginBottom="10dp"        
    android:background="@drawable/offerItemLayout">
    <LinearLayout
        android:id="@+id/offerImageHolder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            .
            .
            .
    </LinearLayout>
</LinearLayout>

У меня есть следующий drawable xml (offerItemLayout), который правильно создает границы:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
               android:shape="rectangle">
            <corners
                android:radius="5dp"/>
            <stroke
                android:width="1dp"
                android:color="@color/bggrey" />            
        </shape>
    </item>
    // The lines below causes an inflation failure.
    <item>
        <fill
            android:color="@color/white"/>
    </item>
</layer-list>

Но вставка элемента с заполнением приводит к сбою в инфляции макета.

Кроме того, если я назначаю цвет фона моему внутреннему LinearLayout (offerImageHolder), он переопределяет первый фон своими закругленными углами.

Любые мысли об этом правильно?:/

4b9b3361

Ответ 1

Вам не нужен отдельный элемент заполнения. На самом деле это недействительно. Вам просто нужно добавить блок solid в shape. Следующий stroke рисует поверх solid:

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">

    <corners android:radius="5dp" />
    <solid android:color="@android:color/white" />
    <stroke
        android:width="1dip"
        android:color="@color/bggrey" />
</shape>

Вам также не нужен layer-list, если у вас есть только один shape.

Ответ 2

background.xml в папке с возможностью переноса.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF"/>    
<stroke android:width="3dp"
        android:color="#0FECFF" />
<gradient                           //specify graident
    android:startColor="#ffffffff" 
    android:endColor="#110000FF" 
    android:angle="90"/> 

<padding android:left="5dp"
         android:top="5dp"
         android:right="5dp"
         android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
</shape>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="210dp"
android:orientation="vertical"
android:layout_marginBottom="10dp"        
android:background="@drawable/background">