web-dev-qa-db-ja.com

画像をストレッチせずにRelativeLayoutの背景に塗りつぶす方法

私のAndroidプロジェクトでは、画面のサイズであるXMLのRelativeLayoutルート要素全体を背景画像で埋める方法がわかりません。これがすべてのアスペクト比で機能することを確認したいので、必要に応じて画像が垂直または水平にクリップされます。これを簡単に行う方法を知っていますか?ImageViewsおよびButtons、しかし実際には一般的なViewsではありません。

現在、私のXMLファイル:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/enclosing_rl"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:background="@drawable/background"
    Android:fitsSystemWindows="false">
<!-- Other elements -->
</RelativeLayout>
22
pqn

あなたの画像を9つのパッチに変える以外、これは可能だとは思いません。代わりにできることは、RelativeLayoutの最初のビューとしてImageViewを追加することです。 layout_centerInParentをtrueに設定し、layout_widthとlayout_heightをmatch_parentに設定します。次に、scaleTypeをcenterCropに設定します。これにより、画像が歪みなく画面いっぱいに表示されますが、画面のサイズ/向きによっては、画像の上部/下部または左右の一部が切り取られる場合があります。

<ImageView 
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_centerInParent="true"
        Android:scaleType="centerCrop"
            Android:src="@drawable/background" />

RelativeLayoutの他のビューは、RelativeLayoutの最初のビューである限り、ImageViewの上に表示されます(xmlにいる場合)。

55
Flynn81

Res/drawableフォルダーにビットマップ描画可能XMLリソースを作成します。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:src="@drawable/background"
    Android:tileMode="repeat" />

@ drawable/backgroundの代わりにそのドロアブルを背景として使用します

11
tiguchi

これに応じて answerImageViewRelativeLayoutを入力するには、alignImageViewパラメーターを使用します。

すべてのビューをLinearLayoutに配置し、alignパラメーターをバックグラウンドImageViewに設定できます。

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" >

     <ImageView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:src="@drawable/my_background"
        Android:scaleType="centerCrop"
        Android:layout_alignTop="@+id/my_views"
        Android:layout_alignBottom="@+id/my_views"

        />

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:id="@+id/my_views"
        Android:orientation="vertical" >
    <!-- stuff -->
    </LinearLayout>


</RelativeLayout>

そのスマートで100%有効な答えは、画像ビューのプロパティscaleTypeを設定することです!

 Android:scaleType="fitCenter"
0
Sheharyar Ejaz