情况:
我有一个带有两个 drwable 图层列表的图像视图。可绘制的框架为 800x400 像素,可绘制的封面为 800x380 像素。两个图像都位于可绘制的文件夹中
<ImageView
android:id="@+id/preview_img_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.9"
android:adjustViewBounds="true"
android:src="@drawable/result_preview"/>
drawable/result_preview 中的 Drwable 图层列表
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/cover">
<bitmap
android:gravity="left|top"
android:src="@drawable/cover" />
</item>
<item
android:id="@+id/frame">
<bitmap
android:gravity="left|top"
android:src="@drawable/frame" />
</item>
</layer-list>
此设置按预期工作,封面显示在所有设备上。现在用户可以将样品盖更换为相同尺寸的另一个盖。
替换图层列表中的封面并保持框架不变。
LayerDrawable layer = (LayerDrawable) getResources().getDrawable(R.drawable.result_preview);
InputStream coverIs = getContentResolver().openInputStream(Uri.parse(coverUri));
this.drwCover = (BitmapDrawable) BitmapDrawable.createFromStream(coverIs, coverUri);
drwCover.setGravity(Gravity.LEFT | Gravity.TOP);
//drwCover.getBitmap().setDensity(160);
layer.setDrawableByLayerId(R.id.cover, drwCover);
imageView.setImageDrawable(layer);
问题:
用新的盖子(与旧的尺寸相同)更换当前的盖子会产生不同的结果,具体取决于所使用的设备。
在具有 3.2 屏幕和 480x320 分辨率的设备上,更换的盖子适合框架。在分辨率为 3.7 和 800x480 的设备上,更换后的封面显示得比旧封面小。
我发现小型设备上的 imageview 中的可绘制对象具有 800x400 的固有高度,与可绘制对象的尺寸相同。在更大的屏幕上,drawable 的固有高度要大 30%。
我知道内在价值可能因屏幕而异。
我所期待的是,替换旧的drawable 应该像旧的那样按比例放大到+30%。但这并没有发生。
问题:
是否可以选择将图像视图或图层列表告知 Adpt 本身?我认为应该有办法做到这一点,因为系统一开始就已经这样做了。