我正在编写一个 Android 应用程序,使用 minSdkVersion = 15
进行测试 (在 API 级别 19 上测试)。我想在应用程序中添加一个覆盖层,中间有一张小手机图片。我添加了标准 Android 图片中的可绘制资源 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上:
![screenshot](https://istack.dev59.com/vTc5g.webp)
- 在gradle.build中添加
vectorDrawables.useSupportLibrary = true
- 添加
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
进入 Activity
- 将
ImageView
更改为android.support.v7.widget.AppCompatImageView
(在 Java 代码中设置背景而不是在 xml 中) - 将
wrap_content
传递给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版本中实现缩放?
android:scaleType="fitCenter"
,并且您可以添加填充来创建边框。 - PhilioConstraintLayout
中的多个视图,并以不重叠的方式约束它们,例如使用链或仅相对于彼此定位。如果您可以添加一个图像来演示您想要实现的内容(例如线框图),那么提供更完整的答案可能会更容易。 - Philio