【发布时间】:2019-03-30 13:12:38
【问题描述】:
我正在用minSdkVersion = 15 编写一个Android 应用程序(19 日测试)。我想在中间有一张小手机图片的叠加层。我从标准 Android 的图片中添加了可绘制 (xml) 资源 ic_smartphone_black_24dp,并为叠加层创建了一个 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:
我尝试以各种方式缩放手机的图片(阅读this、that 和许多其他方式),但都没有奏效。特别是我尝试过:
- 将
vectorDrawables.useSupportLibrary = true添加到gradle.build - 添加
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
到活动
- 将
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 版本中进行这种缩放吗?
【问题讨论】:
标签: java android android-drawable scaling android-vectordrawable