默认情况下,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_parent
match_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 在 RelativeLayout 内的高度为 0
Android:LinearLayout 内的 CardView 使应用程序崩溃
LinearLayout 和 NestedScrollView 内的 RecyclerView - 如何滚动到某个位置的项目顶部?