23

在我的 Android 项目中,我不太确定如何让我的背景图像填充RelativeLayoutXML 中的整个根元素,即屏幕的大小。我想确保这适用于所有纵横比,因此图像将根据需要垂直或水平剪辑。有人知道如何轻松做到这一点吗?我只看到有关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>
4

4 回答 4

61

除了将您的图像变成九个补丁之外,我认为这是不可能的。你可以做的是——

  1. 添加一个ImageView作为你的第一个视图RelativeLayout
  2. 设置layout_centerInParenttrue
  3. layout_widthlayout_height设置为match_parent
  4. 然后设置scaleTypecenterCrop

这将确保图像填满屏幕而不会出现任何失真,但根据屏幕尺寸/方向,图像的顶部/底部或左侧/右侧可能会被截断。

<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 中时)。

于 2012-06-30T17:24:02.953 回答
12

在您的 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

于 2012-06-30T17:12:46.903 回答
6

根据这个答案如果你想ImageView填写你的RelativeLayout,使用align参数ImageView

您可以将所有视图放入 aLinearLayout并将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>
于 2016-06-26T06:48:43.563 回答
0

其聪明且 100% 有效的答案是设置 image view 的属性 scaleType !

 android:scaleType="fitCenter"
于 2018-08-10T07:07:47.377 回答