1

因此,我正在尝试将相机预览作为背景查看,并在其上添加 imageview。看看我问过的这个问题,以更好地了解我想要完成的工作。但是,我发现不是使用 FrameLayout,而是使用 RelativeLayout 更容易(因为可以将视图放置在屏幕上我想要的位置)。问题是我无法让图像视图(在表面视图上)占据整个屏幕。无论我如何重新调整图像大小,它仍然显示在中心而不填满屏幕。

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

这是 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();

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

图像未全屏显示

4

2 回答 2

1

我是否正确您想将 android:id="@+id/image" 拉伸到整个布局中?首先在布局视图中检查 ImageView 占用了应有的整个空间。如果是这样,则将正确的缩放类型添加到您的 ImageView 属性列表中:

android:scaleType="fitXY"

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

android:background="@drawable/background"

祝你好运。

于 2012-11-16T02:11:27.180 回答
0

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

9 补丁说明

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

所以,经过大量的反复试验,我去掉了图像上的所有边框,并去掉了所有的模糊效果。由于某种原因,该图像的文件大小要小得多。然后,我试着把它作为背景,然后……成功了!

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

我希望这对任何可能面临类似问题的人有用!

于 2012-11-16T18:48:05.317 回答