如何使图像填充RelativeLayout的背景不拉伸(How to make image fill

2019-06-25 22:18发布

在我的Android项目,我不太知道如何使我的背景图片填充的全部RelativeLayout在XML根元素,它是屏幕的大小。 我要确保这适用于所有的纵横比,因此图像会水平或垂直夹是必要的。 是否有人知道如何轻松地做到这一点? 我只看到有关问题ImageView S和Button S,但没有真正的通用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>

Answer 1:

除了把你的图像分成九个补丁,我不认为这是可能的。 你可以做的反而是增加一个ImageView的在你的RelativeLayout第一种观点。 设置layout_centerInParent为真,并有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)。



Answer 2:

创建你的资源/文件夹中绘制一个位图绘制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" />

使用可绘制作为背景,而不是@绘制/背景



Answer 3:

根据这个答案如果你希望你ImageView填补你RelativeLayout ,使用align参数ImageView

你可以把你的视图到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>


Answer 4:

其智能和100%的工作答案是设置图像视图的财产scaleType!

 android:scaleType="fitCenter"


文章来源: How to make image fill RelativeLayout background without stretching