我正在尝试在文件列表视图中使用ic_library_books_black_48dp Material Icon作为文件类型图标。
最大的可用文件 ic_library_books_black_48dp.png ,密度如下
drawable-mdpi
drawable-hpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
由于图像文件类型显示缩略图预览,因此需要较大的图标以保持一致性。它们被调整为 144x144 dp :
<ImageView
android:id="@+id/grid_item_iv"
android:layout_width="144dp"
android:layout_height="144dp"/>
以下是 xhdpi设备上原型的放大视图:
我对提供的xhdpi分辨率不满意,所以我制作了xxhdpi和xxxhdpi版本的副本,并相应地重命名,并将它们放入 drawable-xhdpi 文件夹
resources
drawable-xhdpi
ic_library_books_black_48dp.png
ic_library_books_black_48dp_xxhdpi.png
ic_library_books_black_48dp_xxxhdpi.png
然后在 GetView()
switch (fileType)
{
case AttachmentFileType.FileType.Docs:
iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp);
break;
case AttachmentFileType.FileType.Audio:
iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp_xxhdpi);
break;
case AttachmentFileType.FileType.Images:
iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp_xxxhdpi);
break;
default:
iv.SetImageResource(Resource.Drawable.ic_attachment_test);
break;
}
我更喜欢在我的xhdp设备上将ic_library_books_black_48dp_xxxhdpi.png的清晰度扩展到144x144 dp。但是,这种方法不适用于更高密度的屏幕(xxhdpi,xxxhdpi),因为xxxhdpi是最高的ic_library_books_black_48dp.png的版本。为了支持xxhdpi和xxxhdpi,我需要分别使用xxxxhdpi和xxxxxhdpi版本的图标(即“两个等级更高”)。 有没有办法让这项工作不会导致创建自定义图标(可以在保持像素密度的情况下安装Android工作室或编辑程序高档)?
答案 0 :(得分:2)
一种棘手的方法是将imageView的scaleType设置为fitcenter,并将constant width = 144dp和height = 144dp设置为imageview。它会将你的图标放大到144dp
<ImageView
android:layout_width="144dp"
android:layout_height="144dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_library_books_black_48dp"/>
答案 1 :(得分:1)
如果可以,我会使用矢量图形。它们直接来自Android Studio。
File -> New -> Vector Graphic
。
然后点击图标以“搜索”...找到您的图书馆图标...
接下来完成它。 (这里不需要改变任何东西)。
如果你高于API 21,那么你很高兴,你可以像任何其他图标一样引用它。
如果您需要支持降低API,请阅读the official Android Documentation about Vector Drawables。
此外,阅读所有关于Android Studio support here。
的内容答案 2 :(得分:0)
将imageView的scaleType用于FIT_CENTER。 FIT_CENTER-使用CENTER缩放图像。 在XML文件中
android:scaleType="fitCenter"
或在您的Activity类
中 imgview.setScaleType(ImageView.ScaleType.FIT_CENTER);