Есть ли эквивалент setShadowLayer при определении фигур в XML на Android?

Если я рисую круглую прямоугольную форму по коду, я могу использовать setShadowLayer, чтобы получить тень, нарисованную для фигуры. Есть ли эквивалент при определении фигур в XML?

Следующий пример рисует круглый прямоугольник фона. Что мне нужно добавить, чтобы добавить тень в форму? Возможно ли использование XML?

shape_test.xml

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#8067BF6A"/> <stroke android:width="3dp" android:color="#80000000" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" android:topLeftRadius="7dp" android:topRightRadius="7dp"/> </shape> 

main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:padding="10dp" android:background="#ffdddddd" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:background="@drawable/shape_test" android:padding="5dp" android:textStyle="bold" android:textSize="28sp" android:text="Hello" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

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

Если это поможет, вот ссылка на аналогичный вопрос, который я опубликовал, наряду с некоторым кодом. Я заработал для некоторых изображений, но по-прежнему кажется, что иногда удается найти альфа-канал. В принципе, я переопределил ImageView и поместил это в метод onDraw() :

 @Override protected void onDraw(Canvas canvas) { Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.omen); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShadowLayer(5.5f, 6.0f, 6.0f, Color.BLACK); canvas.drawColor(Color.GRAY); canvas.drawRect(50, 50, 50 + bmp.getWidth(), 50 + bmp.getHeight(), paint); canvas.drawBitmap(bmp, 50, 50, null); } 

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