Android,ImageView,不需要的填充

时间:2016-10-20 20:57:04

标签: java android

我正在使用类似的东西来展示我的徽标或用户个人资料图片:

<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

问题是我得到了类似的东西:

enter image description here

基本上问题是,当用户点击并选择一张图片时,我会使用滑动来加载图片以替换默认的@drawable/account_circle_gray,但正如您所看到的那样,填充消失了:

enter image description here

图片占据了应有的空间!我想添加的内容是padding="5dp",这会在背景和Glide加载的用户图片之间进行一些填充,问题@drawable/account_circle_grey已经有一个奇怪的填充,但我注意到当我选择一张旧图片时,并不是所有的drawable都能得到填充。整页背景我没有得到填充,也许我可以强制android选择更大的图片,为什么我得到这个填充?

修改 要进行clerify,我使用了this教程来尝试所有可能的(scaleType + adjustViewBounds)值,但没有任何效果。

3 个答案:

答案 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;修剪它就是它。

相关问题