默认情况下,LinearLayout 内的 ImageView 在侧面有边距

Posted

技术标签:

【中文标题】默认情况下,LinearLayout 内的 ImageView 在侧面有边距【英文标题】:ImageView inside LinearLayout is having margins on sides by default 【发布时间】:2019-07-05 21:42:56 【问题描述】:

我想知道,仍然找不到这个问题。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        android:orientation="vertical"
        android:layout_
        android:layout_>

    <FrameLayout
            android:background="@color/colorPrimary"
            android:layout_
            android:layout_/>

    <ImageView
            android:src="@drawable/someImage"
            android:id="@+id/kioskModeImageView"
            android:layout_
            android:layout_/>

</LinearLayout>

对于上述结构,我的 ImageView 两侧被缩短,左右两边有一些奇怪的边距,我不知道它们是从哪里来的。

当我从容器中的 LinearLayout 中删除 FrameLayout(并且仅将 ImageView 作为一件事)时,一切都按预期工作 - 图像占据了整个位置,因为 match_parent 应该可以工作

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        android:orientation="vertical"
        android:layout_
        android:layout_>

    <ImageView
            android:src="@drawable/customer_dark_1"
            android:id="@+id/kioskModeImageView"
            android:layout_
            android:layout_/>

</LinearLayout>

是什么导致了这个问题?

【问题讨论】:

【参考方案1】:

您尚未将 scaleType 设置为 imageview,尝试设置 android:scaleType="fitXY" scaleType 有其他值,尝试使用适合您要求的值。

【讨论】:

【参考方案2】:

在您的情况下,match_parentmatch_parent 不适用于带有FrameLayout 的图像。 您需要添加 layout_weight 并设置 layout_height="0dp" 以使其看起来像预期的那样

<LinearLayout
        android:orientation="vertical"
        android:layout_
        android:layout_>

    <FrameLayout
            android:background="@color/colorPrimary"
            android:layout_
            android:layout_/>

    <ImageView
            android:src="@drawable/someImage"
            android:id="@+id/kioskModeImageView"
            android:layout_
            android:layout_
            android:layout_weight="1" />

</LinearLayout>

另外,在这篇文章中解释了ImageView scaleType

https://thoughtbot.com/blog/android-imageview-scaletype-a-visual-guide

【讨论】:

以上是关于默认情况下,LinearLayout 内的 ImageView 在侧面有边距的主要内容,如果未能解决你的问题,请参考以下文章

片段内的LinearLayout总是在顶部留下空白

LinearLayout 在 RelativeLayout 内的高度为 0

Android:LinearLayout 内的 CardView 使应用程序崩溃

LinearLayout的横向和纵向布局问题

LinearLayout 和 NestedScrollView 内的 RecyclerView - 如何滚动到某个位置的项目顶部?

在我的情况下,如何以编程方式在另一个上面显示一个布局?