Я пишу приложение для Android с minSdkVersion = 15
(тестирование на 19).Я хотел бы иметь наложение с небольшим изображением телефона в середине.Я добавил нарисованный (xml) ресурс ic_smartphone_black_24dp
из стандартных изображений Android и создал ImageView для наложения следующим образом:
<ImageView
android:id="@+id/overlay"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="1."
android:background="@drawable/overlay_full"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
Это делает наложение, но изображение смартфона растягивается на весь ImageView.:
Я пытался масштабировать изображение телефона различными способами (читая это , , и многие другие), но ничегоэто сработало.В частности, я попытался:
- добавить
vectorDrawables.useSupportLibrary = true
в gradle.build - , добавив
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
в Activity
- изменяя
ImageView
на android.support.v7.widget.AppCompatImageView
(и устанавливая фон в java-коде, а не в xml) - передавая
wrap_content
вместо 0dp
как layout_width/height
(и снимая ограничения) - установка размера в
overlay_full
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/overlay_background">
<size
android:width="152dp"
android:height="152dp"/>
</item>
<item android:drawable="@drawable/ic_smartphone_black_24dp"
android:left="30dp"
android:top="30dp"
android:right="30dp"
android:bottom="30dp"
android:gravity="center"
android:scaleType="center"
android:width="30dp"
android:height="30dp">
<size
android:width="30dp"
android:height="30dp"/>
</item>
</layer-list>
Код работает, как и ожидалось, в API 28, где я также тестировал.Любая идея, как сделать это масштабирование в более ранних версиях API?