Я хочу применить тень к ImageView
. Когда я применяю тень к TextView
, я получаю это, но то же самое не доходит до ImageView
. Как я могу решить эту проблему?
Как применить тень к ImageView?
Ответы (6)
Мы также можем использовать CardView, который обеспечивает фон с закругленными углами. и тень. Чтобы использовать это, вам необходимо добавить библиотеку v7 CardView. как зависимость от проекта в build.gradle, как показано ниже.
dependencies {
compile 'com.android.support:cardview-v7:23.0.1'
-------
}
Примечание: замените
23.0.1
в строке выше на соответствующую версию.
Итак, я окружил ImageView
CardView
, чтобы создать тень, как показано ниже.
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/white">
<ImageView
android:id="@+id/dish_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:adjustViewBounds="true" />
</android.support.v7.widget.CardView>
Это добавит тени вокруг изображения.
Примечание: я не знаю, хорошее ли это решение. Я начинающий. Я попытался реализовать
CardView
, который дает идею реализовать то же самое для этого. Если что-то не так, сообщите мне причину.
card_view
?
- person ban-geoengineering; 18.01.2017
app
xmlns.
- person ban-geoengineering; 18.01.2017
Это взято из презентации Ромена Гая на Devoxx, pdf можно найти здесь.
Paint mShadow = new Paint();
// radius=10, y-offset=2, color=black
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas)
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
Надеюсь это поможет.
ПРИМЕЧАНИЯ
Не забывайте, что для Honeycomb и выше вам нужно вызвать setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
, иначе вы не увидите свою тень! (@Dmitriy_Boichenko)
SetShadowLayer
, к сожалению, не работает с аппаратным ускорением, поэтому сильно снижает производительность (@Matt Wear)
Ответ взят из здесь
Для Api выше 21. Вы можете попробовать в xml в imageview или Button: Прочтите здесь на сайте разработчика
android:elevation="5dp"
android:elevation
не работает в ImageView
- person tmm1; 10.01.2018
bitmap
?
- person Piotr Aleksander Chmielowski; 16.12.2018
Создайте файл shadow_rect.xml
<?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="@android:color/darker_gray" />
<corners android:radius="0dp"/>
</shape>
</item>
<item android:right="1dp" android:bottom="2dp">
<shape
android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="1dp"/>
</shape>
</item>
</layer-list>
И используйте это как android: background = "@ drawable / shadow_rect в вашем Imageview.
Вы можете создать список слоев с возможностью рисования и поместить в него два элемента (чертежи) для изображения и тени.
Положение и содержимое вашего теневого элемента могут меняться в зависимости от того, где вы хотите применить тень (сверху, слева, справа, справа и слева и т. Д.) И стиля вашей тени.
ImageView
<ImageView
......
android:elevation="2dp"
android:background="@drawable/myrect"/>
Фон для рисования определяется как прямоугольник с закругленными углами:
<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#42000000" />
<corners android:radius="5dp" />
</shape>
вы можете использовать свойство outlineSpotShadowColor
чтобы установить тень на истинное, попробуйте setOutlineSpotShadowColor
с @color/black
и увеличьте elevation
до 12dp
, чтобы установить тень на false setOutlineSpotShadowColor
с помощью @android:color/transparent
и уменьшить elevation
TextView
. Это хорошо. Вы просите тень блока наImageView
. Я не верю, что это существует. Для этого вам нужно создать собственный фон, который выглядел бы как тень. - person Matthew Rudy   schedule 02.12.2011android:elevation="2dp"
иногда бывает достаточно - person ekashking   schedule 31.05.2020android:elevation
работает, только если вы определилиandroid:background
. Без определения обоих я вообще не получаю тени. - person Enve   schedule 09.11.2020