Android作物背景

我有一个LinearLayout宽度设置为fill_parent和高度wrap_content 。 现在我想给它一个PNG文件的背景,但以传统的方式来做,导致LinearLayoutresize,以显示整个背景,而不是裁剪额外的部分。

我怎样才能设置LinearLayout的背景,使其不会resize?

谢谢

Solutions Collecting From Web of "Android作物背景"

看来只有使用ImageView并相应地设置scaleType参数才能实现此类function。 一个快速的解决方法是使用FrameLayout并将ImageView放在另一个具有透明背景的布局下。

码:

 <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" /> </FrameLayout> 

背景位图的默认行为是完全填充容器,并根据需要增大容器的水平和垂直尺寸。 解决scheme是创build一个可绘制的位图资源并改变重力。

检查以下链接并查找可能的重力值。 你的观点应该只是引用可绘制的资源,你应该没问题。

http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap

我通过LinearLayout并重写onMeasure(int,int)callback,然后更新布局XML来使用我的新布局types来解决这个问题。 我无权发布确切的代码,但我所做的是调用super.onMeasure(int,int)实现,并检查测量的高度是否回到了我的背景图像的确切高度。 如果是这样,我抓住所有子视图的测量高度,然后计算一个新的高度值,并将其传递给setMeasuredDimension(int,int)

把这个代码放在xml活动中,例如activity_main.xml

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