删除 Android 中的 ImageView 边框

Remove ImageView border in Android

我正在制作一个使用卡片显示信息的应用程序,我希望在卡片的左侧有一个图像。我遇到的问题是,由于某种原因,我在左侧插入的 ImageView 被四面八方填充。

在网上搜索了一下,发现很多Whosebug上的帖子都在问同样的问题,而且都被告知要使用这段代码来解决他们的问题:

android:adjustViewBounds="true"

并简单地将其添加到 xml 的 ImageView 中。我试过了,但填充仍然存在。我已将图像视图的背景颜色设置为石灰绿色以说明填充区域。

这是我的 XML 卡片代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_margin="2dp"
    android:clickable="true"
    android:foreground="?android:attr/selectableItemBackground"
    card_view:cardCornerRadius="5dp"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/drinkImage"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:background="#00FF00"
            android:gravity="left"
            />

        <TextView
            android:padding="8dp"
            android:id="@+id/drinkName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            android:layout_toRightOf="@+id/drinkImage"
            />

        <TextView
            android:padding="8dp"
            android:id="@+id/drinkDesc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/drinkName"
            android:layout_toRightOf="@+id/drinkImage"
            />

    </RelativeLayout>
</android.support.v7.widget.CardView>

这就是我在屏幕上看到的内容:

http://i.stack.imgur.com/bVaR4.png

绿色的"border"不是边框,是你用android:background="#00FF00"设置的ImageView的背景。在 ImageView 上绘制了您的图像。图片比例不符合 ImageView 的宽度和高度,或者图片的宽度或高度小于 ImageView 的宽度或高度。在这种情况下,ImageView 的默认行为是使图像在 ImageView 中居中。因此你看到了space。您可以使用 android:scaleType 指定行为。请参阅 official documentation 。否则,您可以调整 ImageView 的宽度和高度以匹配图像中的一个。

更新: 哦,对不起,我没有注意到你正在使用 CardView:

根据文档,设计如下:

Due to expensive nature of rounded corner clipping, on platforms before L, CardView does not clip its children that intersect with rounded corners. Instead, it adds padding to avoid such intersection (See setPreventCornerOverlap(boolean) to change this behavior).

有关详细信息,请参阅 the CardView docs

好的,原来我是通过右键单击 drawable/ 并单击 new->Image Asset 向项目添加图像资源。我没有意识到这实际上是裁剪和调整图像大小,因为我显然不知道图像资产创建者的正确用法。

为了将 .PNG 文件添加到项目中,我只是从 Finder(Mac 等同于 Windows 资源管理器)复制图像文件并将它们粘贴到 [=14] 中的 drawables 文件夹中=] 工作室和一切都很完美。真是个菜鸟错误!