Внутренняя тень для LinearLayout

189
10 февраля 2020, 06:30

Никак не могу понять, как можно сделать внутреннюю тень. Чтобы было так: Пытался сделать так:

Второй ответ но ничего не получается, точнее не то, что нужно.

Будьте так любезны скажите, как это сделать, я никак не могу понять.
Я перерыл многие ссылки, но такой результат я получить не смог.
С виду вроде не сложно, а никак не могу додуматься, что сделать нужно.

Это нужно применить к LinearLayout.

Answer 1

Тут есть таки то, что тебе нужно, там где красный прямоугольник со скошенными углами. Если подробнее, то создаем в drawable ресурс shape.xml и добавляем в него следующее:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <gradient
                android:angle="0"
                android:centerColor="#00000000"
                android:centerX="0.95"
                android:endColor="#77000000"
                android:startColor="#00000000" />
        </shape>
    </item>
</layer-list>

Этот drawable нарисует прямоугольник с градиентом слева на право, где левый цвет - полностью прозрачный черный, "центральный" тоже, а конечный - полупрозрачный черный. Получим плавную тень по правому краю. android:centerX="0.95" говорит, что центральный цвет находится на 95% от ширины прямоугольника, то есть почти у правого края. Тень займет правые 5% от вьюшки. Копируем тег item целиком, вставляем под первым и заменяем angle на 90. Получаем тень по нижнему краю. Повторяем для 180 и 270. Получаем нужную тебе тень. Поиграйся с цветом и положением центра, получишь любую нужную тебе тень.

Чтобы применить его, у linearLayout в xml пропиши android:background = "@drawable/shape". Если нужен цвет, поверх которого рисуем тень, самым первым item'ом ставим

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#FFFF00FF"/>
        </shape>
    </item>

Полный вариант:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <gradient
                android:angle="0"
                android:centerColor="#00000000"
                android:centerX="0.90"
                android:endColor="#77000000"
                android:startColor="#00000000"
                android:type="linear" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <gradient
                android:angle="90"
                android:centerColor="#00000000"
                android:centerX="0.96"
                android:endColor="#77000000"
                android:startColor="#00000000"
                android:type="linear" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <gradient
                android:angle="180"
                android:centerColor="#00000000"
                android:centerX="0.90"
                android:endColor="#77000000"
                android:startColor="#00000000"
                android:type="linear" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <gradient
                android:angle="-90"
                android:centerColor="#00000000"
                android:centerX="0.96"
                android:endColor="#77000000"
                android:startColor="#00000000"
                android:type="linear" />
        </shape>
    </item>
</layer-list>
READ ALSO
Принцип generic типов Java

Принцип generic типов Java

Пытаюсь написать параметризуемый метод, принимающий параметризованные типы:

189
Заполнить таблицу enum с помощью JPA

Заполнить таблицу enum с помощью JPA

Есть два класса enum и класс содержащий его как атрибут

200
Почему у java нет парсера собственного кода?

Почему у java нет парсера собственного кода?

Сразу скажу, что знаю, есть, Javaparser проект, но он от сторонних разработчиковЯ просто не могу понять если java компилируется в байт-код из исходников,...

209
Чем proxy через BeanPostProcessor отличается от AOP?

Чем proxy через BeanPostProcessor отличается от AOP?

Не могу понять, чем прокси класс который создается, когда я в BeanPostProcessor добавляю какую-нибудь логику после инит метода отличается от того...

220