如何使图像填充RelativeLayout背景而不拉伸

时间:2012-06-30 16:54:54

标签: android background android-relativelayout

在我的Android项目中,我不太确定如何使我的背景图像填充XML中的RelativeLayout根元素的整体,这是屏幕的大小。我想确保这适用于所有宽高比,因此图像将根据需要垂直或水平剪裁。有人知道如何轻松地做到这一点吗?我只看到有关ImageViewButton的问题,但不是真正的通用View

目前我的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>

4 个答案:

答案 0 :(得分:54)

除了将图像变成九个补丁外,我认为这不可行。您可以做的是添加ImageView作为RelativeLayout中的第一个视图。将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中的任何其他视图都会出现在ImageView的顶部,只要它是RelativeLayout中的第一个视图(当你在xml中时)。

答案 1 :(得分:11)

在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作为背景而不是@ drawable / background

答案 2 :(得分:6)

根据此answer如果您希望ImageView填充RelativeLayout,请使用align的{​​{1}}参数。

您可以将所有观看次数添加到ImageView并将LinearLayout参数设置为后台align

ImageView

答案 3 :(得分:0)

它的聪明和100%可行的答案是设置图像视图的属性scaleType!

 android:scaleType="fitCenter"