我需要一些帮助,使背景图像在线性布局中纵向和横向拉伸或缩放。然而,每次我尝试设置背景时,它都不会拉伸图像以适应屏幕。我也不关心保持纵横比。
这是我目前在测试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,我会得到一个重复的背景:
我确信解决方案非常基础,但由于某种原因我错过了它。任何帮助将不胜感激
感谢
答案 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
参数,其中包含一个可能的值:
如果你不介意在必要时(不同比例的屏幕比你的图像的屏幕)图像被歪曲并且你不希望图像变形,我会建议 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" />