1

そのため、カメラのプレビューを背景として表示し、その上にイメージビューを表示しようとしています。私が何を達成しようとしているのかをよりよく理解するために、私が尋ねたこの質問をチェックしてください。ただし、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」ではなく「background」として適用します。

android:background="@drawable/background"

幸運を。

于 2012-11-16T02:11:27.180 に答える
0

しばらく実験した後、私は自分の問題の解決策を見つけたようです。私の画像はこの写真のように表示されていました:

9パッチの説明

これは奇妙なことです。これは、9パッチのイメージがどのように機能するかであり、イメージを9パッチとして宣言しなかったためです。しかし、match_parent(またはfill_parent)を呼び出した場合でも、投稿した画像のように塗りつぶし領域までしか塗りつぶされませんでした。

そのため、試行錯誤を繰り返しながら、画像上にある境界線をすべて取り除き、すべてのぼかし効果を取り除きました。画像は、何らかの理由で、ファイルサイズが劇的に小さくなりました。それから、これを背景にして…成功!

そもそもなぜうまくいかなかったのかよくわかりませんが、おそらく画像に1pxの境界線があったため、通常のPNGではなく9パッチのPNGとして保存されたという理論があります。ファイル。または、画像にあったぼかし効果が原因である可能性があります。よくわかりませんが、ぼかし効果を外して境界線を削除すると、機能することはわかっています。

これが同様の問題に直面する可能性のある人に役立つことを願っています!

于 2012-11-16T18:48:05.317 に答える