RelativeLayout 中的 ImageView 与父级不匹配
Posted
技术标签:
【中文标题】RelativeLayout 中的 ImageView 与父级不匹配【英文标题】:ImageView within RelativeLayout is not matching parent 【发布时间】:2012-11-16 00:50:51 【问题描述】:所以,我正在尝试将相机预览作为背景查看,并在其上添加图像视图。检查我问过的question out,以更好地了解我要完成的工作。但是,我发现不是使用 FrameLayout,而是使用 RelativeLayout 更容易(因为可以将视图放置在屏幕上我想要的位置)。问题是我无法让图像视图(在表面视图上)占据整个屏幕。无论我如何调整图像大小,它仍然显示在中心而不填满屏幕。
所以,我的问题是,如何让图像视图在表面视图上填满整个屏幕?也许,我犯了一个简单的错误,但如果是这种情况,请指出。任何帮助将不胜感激!谢谢!
这是 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/relative" >
<ImageView
android:layout_
android:layout_
android:id="@+id/image"
android:src="@drawable/background" >
</ImageView>
<Button
android:id="@+id/scan"
android:layout_
android:layout_
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:text="Scan"
android:textSize="20dp"
android:textStyle="bold"
android:onClick="Scan" />
<Button
android:id="@+id/search"
android:layout_
android:layout_
android:layout_below="@+id/scan"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:text="Search"
android:textSize="20dp"
android:textStyle="bold"
android:onClick="Search" />
<Button
android:id="@+id/importing"
android:layout_
android:layout_
android:layout_below="@+id/search"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:text="Import"
android:textSize="20dp"
android:textStyle="bold"
android:onClick="Import" />
</RelativeLayout>
这是我放置视图的代码(放在前面,以便它们在表面视图中可见):
mPreview = new CameraPreview(this, mCamera);
relative.addView(mPreview);
layout.bringToFront();
scan.bringToFront();
search.bringToFront();
friendImport.bringToFront();
编辑: 这是我正在谈论的示例图像(我试图让白色透明图像覆盖整个屏幕):
【问题讨论】:
【参考方案1】:您想将 android:id="@+id/image" 拉伸到整个布局中,我说得对吗? 首先在布局视图中检查 ImageView 占用了应有的整个空间。 如果是这样,那么将适当的缩放类型添加到您的 ImageView 属性列表中:
android:scaleType="fitXY"
或者作为替代方案,将图像资源应用为“背景”而不是“src”:
android:background="@drawable/background"
祝你好运。
【讨论】:
是的,没错,我希望 android:id="@+id/image" 成为整个屏幕大小。不幸的是,我已经尝试了您所说的两种方法,但没有运气。我还使用属性“fill_parent”作为高度和宽度,但是,这似乎无济于事。如果您有任何其他建议,请随时提出,我在这里迷路了【参考方案2】:经过一段时间的试验,我似乎找到了解决问题的方法。我的图像显示类似于这张照片:
这很奇怪,因为这是 9-patch 图像的工作原理,而我没有将我的图像声明为 9-patch。但即使我调用了 match_parent(甚至是 fill_parent),它也只会填充到我发布的图像中的填充区域。
所以,经过多次反复试验,我去掉了图像上的所有边框,并去掉了所有的模糊效果。由于某种原因,该图像的文件大小要小得多。然后,我试着把它作为背景,然后……成功了!
我不太确定为什么它一开始就不起作用,但是,我有一个理论,也许是因为图像上有一个 1px 的边框,它将它保存为 9-patch PNG 而不是一个普通的PNG文件。或者可能是由于图像上的模糊效果。我不太确定,但是,我确实知道,一旦我取消了模糊效果并移除了边框,它确实有效。
我希望这对任何可能面临类似问题的人有用!
【讨论】:
以上是关于RelativeLayout 中的 ImageView 与父级不匹配的主要内容,如果未能解决你的问题,请参考以下文章
RelativeLayout 中的 ImageView 与父级不匹配
如何在RelativeLayout中的其他布局之间放置布局?
将视图附加到Android中的自定义RelativeLayout
RelativeLayout 中的 ListView 填满整个高度