RelativeLayout中的ImageView与父级不匹配

时间:2012-11-16 00:50:51

标签: java android android-layout view imageview

所以,我正在尝试将相机预览视为背景,并在其上方显示imageview。检查我要求的question out,以便更好地了解我想要完成的任务。但是,我没有使用FrameLayout,而是发现使用RelativeLayout更容易(因为我想在屏幕上放置视图)。问题是我无法获取图像视图(在表面视图上)占据整个屏幕。无论我如何重新调整图像大小,它仍然会在中心显示而不会填满屏幕。

所以,我的问题是,如何让imageview在整个屏幕上填满表面视图?也许,我犯了一个简单的错误,但如果是这样,请指出。任何帮助将不胜感激!谢谢!

这是XML文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/relative" >

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/image"
    android:src="@drawable/background" >
</ImageView>

<Button
    android:id="@+id/scan"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_height="wrap_content"
    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();

修改 这是我正在谈论的一个示例图像(我试图让白色透明图像覆盖整个屏幕):

image not displaying full screen

2 个答案:

答案 0 :(得分:1)

我是否更正你要将android:id =“@ + id / image”拉伸到整个布局? 首先检查布局视图,即ImageView占用整个空间。 如果是,则将适当的缩放类型添加到ImageView属性列表中:

android:scaleType="fitXY"

或者作为替代方案,将图像资源应用为“src”而不是“background”:

android:background="@drawable/background"
祝你好运。

答案 1 :(得分:0)

经过一段时间的实验,我似乎找到了解决问题的方法。我的图像显示类似于这张图片:

9 patch description

这很奇怪,因为这是9补丁图像的工作方式,我没有将我的图像声明为9补丁。但即使我调用match_parent(甚至fill_parent),它也只填充到填充区域,就像我发布的图像一样。

因此,经过大量的试验和错误,我带走了图像上的任何边框,并取消了所有的模糊效果。由于某种原因,图像的文件大小要小得多。然后,我试着把它作为背景和......成功!

我不太清楚为什么它开始不起作用,但是,我有一个理论,也许,因为图像上有1px边框,它将其保存为9补丁PNG而不是一个普通的PNG文件。或者可能是由于图像上的模糊效果。我不太确定,但是,我知道,一旦我取消了模糊效果并移除了边框,它确实有效。

我希望这对任何可能遇到类似问题的人都有用!