我正在使用类似的东西来展示我的徽标或用户个人资料图片:
<ImageView
android:id="@+id/logo"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/circle_bg"
android:src="@drawable/account_circle_grey"
android:layout_gravity="center_horizontal" />
@drawable/circle_bg
:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="@color/colorWhiteOpacity"/>
<size
android:width="100dp"
android:height="100dp"/>
</shape>
和@drawable/account_circle_grey
只是我从MaterialUI(黑色192x192)拍摄的照片并使用了Final-Android-Resizer。
问题是我得到了类似的东西:
基本上问题是,当用户点击并选择一张图片时,我会使用滑动来加载图片以替换默认的@drawable/account_circle_gray
,但正如您所看到的那样,填充消失了:
图片占据了应有的空间!我想添加的内容是padding="5dp"
,这会在背景和Glide
加载的用户图片之间进行一些填充,问题是@drawable/account_circle_grey
已经有一个奇怪的填充,但我注意到当我选择一张旧图片时,并不是所有的drawable都能得到填充。整页背景我没有得到填充,也许我可以强制android选择更大的图片,为什么我得到这个填充?
修改 要进行clerify,我使用了this教程来尝试所有可能的(scaleType + adjustViewBounds)值,但没有任何效果。
答案 0 :(得分:1)
将scaleType
的{{1}}设置为ImageView
,或者只能为您的drawable添加高dpi drawable
答案 1 :(得分:1)
当您使用的物理尺寸小于ImageView的尺寸时,可能会发生这种情况。您可以缩放图像以填充空间或使用更大的图像。两者的混合可能是最好的解决方案。
要实现前两者,请尝试:
<ImageView
android:id="@+id/logo"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/circle_bg"
android:src="@drawable/account_circle_grey"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:padding="5dp" />
请注意,我将宽度和高度减少了填充量的2倍。这是因为向视图添加填充会增加整个视图的大小与填充的大小。在这个特殊情况下,我们在左侧,右侧,顶部和左侧添加5dp。这意味着我们必须从宽度上减去左右,从高处减去顶部和底部。
答案 2 :(得分:0)
感谢答案,问题是如此明显,但我让它变得复杂,虽然我使用了很多&#34; account_circle&#34;图片,我没想到的是它们都带有透明填充,所以如果图像是192x192
,例如它的实际尺寸约为182x182
{{1}无论如何,简单的解决方案是在photoshop上打开它,转到图像&gt;修剪它就是它。