【发布时间】:2017-09-17 12:06:44
【问题描述】:
我有一个 Coordinator 布局和一个 ImageView 用于配置文件图片,应该从 ActionBar“挂起”。问题是 Android 从不同密度的可绘制文件夹中选择了错误的图像。这是布局的外观:
您可以在此处看到图像几乎覆盖了整个屏幕(不应该如此)。以下是我在各个文件夹中提供的各种可绘制尺寸:
- drawable-mdpi/avatar.png | 310x310 像素
- drawable-hdpi/avatar.png | 465x465像素
- drawable-xhdpi/avatar.png | 621x621像素
- drawable-xxhdpi/avatar.png | 931x931 像素
现在,为什么 Android 不能像覆盖一个小区域那样显示图像(就像 mdpi 那样)?
(以上测试画面为xxhdpi)
注意:该图像是在 Photoshop Artboard 中创建的,我们假设桌面的密度为 mdpi,而移动设备中的其他密度则按比例放大/缩小。
参考代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/main.appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/main.appbar"
app:layout_anchorGravity="bottom|center"
android:src="@drawable/avatar"/>
</android.support.design.widget.CoordinatorLayout>
【问题讨论】:
-
以文本模式(不是设计模式)打开您的 XML 并执行
ctrl+0,在预览顶部尝试更改默认设备。 -
@Enzokie:我尝试过更换各种设备。它在所有这些上都显示相同。我在真机上测试过也没什么区别。