如何在Android线性布局中拉伸/缩放背景图像?

时间:2013-10-14 14:53:20

标签: android eclipse layout background stretch

我需要一些帮助,使背景图像在线性布局中纵向和横向拉伸或缩放。然而,每次我尝试设置背景时,它都不会拉伸图像以适应屏幕。我也不关心保持纵横比。

这是我目前在测试xml中得到的内容:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/title"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background">
</LinearLayout>

在预览(以及游戏中)中看起来像这样:

enter image description here

如果我将layout_height更改为fill_parent,我会得到一个重复的背景:

enter image description here 我确信解决方案非常基础,但由于某种原因我错过了它。任何帮助将不胜感激

感谢

3 个答案:

答案 0 :(得分:6)

不确定哪些可用的背景布局选项可用于布局的背景属性,但您始终可以将ImageView作为外部FrameLayout中具有最大宽度和高度的第一个元素。然后,您在布局中放置的任何其他内容都将绘制在此图像的顶部。当然,你可以加载你想要的scaletype;例如fitXY也许就是你想要实现的目标。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView 
    android:id="@+id/background"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="@string/backgroundDescription"
    android:scaleType="centerCrop">
</ImageView>   
...

答案 1 :(得分:4)

这里有一个重要的android:scaleType参数,其中包含一个可能的值:

  • 矩阵
  • fitXY
  • fitStart
  • fitCenter
  • fitEnd
  • 中心
  • centerCrop
  • centerInside

如果你不介意在必要时(不同比例的屏幕比你的图像的屏幕)图像被歪曲并且你不希望图像变形,我会建议 centerCrop 。 如果重要的是图像没有被裁剪而你没有歪斜,那么 fitXY 就可以完成这项工作。

希望这有所帮助,并清理了一些......

答案 2 :(得分:0)

您可以将scaleType与centerCrop一起使用

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/background" />