Предотвратить RelativeLayout от наложения на фоновое изображение - PullRequest
0 голосов
/ 26 июня 2018

У меня есть RelativeLayout.Я хотел применить эффект тени к нему, поэтому я определил пользовательский фон ( updatebg.xml ):

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:id="@+id/background" >
            <shape android:shape="rectangle">
                <solid android:color="#449966"/>
            </shape>
        </item>

        <item android:id="@+id/shadow">
            <bitmap  android:src="@drawable/shadow" 
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
            />
        </item>
    </layer-list>

И RelativeLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/layoutP"
    android:background="@drawable/updatebg"
    >
</RelativeLayout>

Все работает отлично, за исключением того, что RelativeLayout растягивается на ту же высоту, что и высота фонового изображения (тени).Если у меня есть содержимое внутри RelativeLayout, которое занимает меньшую высоту, чем высота теневого фонового изображения, то RelativeLayout также будет растягиваться для «обтекания вокруг фона», вместо того, чтобы оборачивать только содержимое внутри RelativeLayout.

Мне нужно, чтобы фоновое изображение для эфира отрегулировалось по высоте родителей (RelativeLayout) или было обрезано.Любые советы о том, как этого добиться?Спасибо!

Я пытаюсь применить градиентный тип тени сверху вниз: enter image description here

1 Ответ

0 голосов
/ 26 июня 2018

Редактировать

Возможно, я неправильно понял, что вы сказали "эффект тени", если вы просто хотите градиент, используйте <gradient> drawable.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/background" >
        <shape android:shape="rectangle">
            <solid android:color="#449966"/>
        </shape>
    </item>
    <item>
        <shape
            android:dither="true"
            android:shape="rectangle" >
            <gradient
                android:angle="270"
                android:endColor="#7fffffff"
                android:startColor="#7f000000" />
        </shape>
    </item>
</layer-list>

Результат выглядит так:

result

Оригинальный ответ

Вам следует рассмотреть возможность использования 9-Patch png вместо,Это так:

9-Patch

Это просто обычное изображение в формате png, но с некоторыми дополнительными маркерами (черные точки / линии на границах), и Android будетиспользуйте эти маркеры, чтобы растянуть изображение по своему усмотрению.

Подробнее о том, как использовать файл 9-Patch, см. официальные документы .

...