6

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

这是我目前在测试 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>

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

在此处输入图像描述

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

在此处输入图像描述 我确信解决方案非常基本,但由于某种原因我错过了它。任何帮助,将不胜感激

谢谢

4

3 回答 3

6

不确定布局的背景属性有哪些可用的背景布局选项,但您始终可以将 ImageView 作为具有最大宽度和高度的外部 FrameLayout 中的第一个元素。然后您放入布局中的任何其他内容都将绘制在此图像之上。当然,您可以只加载您想要的比例类型;比如 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>   
...
于 2013-10-14T15:44:59.030 回答
4

这是具有可能值之一的重要android:scaleType参数:

  • 矩阵
  • 适合XY
  • 适合开始
  • 健身中心
  • 适合结束
  • 中央
  • 中心作物
  • 中心内

如果您不介意在必要时裁剪图像(屏幕与图像的比例不同)并且您不希望图像变形,我建议您使用centerCrop. 如果重要的是不裁剪图像并且您不发现它是否倾斜,那么就fitXY可以完成这项工作。

希望这会有所帮助并澄清一些事情......

于 2014-08-27T07:23:38.337 回答
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" />

于 2014-09-27T12:23:46.693 回答