如何在LinearLayout的背景图像上设置ScaleType

时间:2015-10-12 14:08:54

标签: android

我有这样的线性布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:background="@drawable/bgapp" >

我现在需要的是设置背景图像ScaleType值以便每次填充屏幕的可能性,这是因为我要下载图像然后我将其设置为背景但是如果没有ScaleType,图像将不会根据屏幕密度保持其纵横比。

我发现的是这个解决方案:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bgapp"
    android:scaleType="centerCrop"
    android:gravity="bottom|left" />

但它没有按预期工作..有没有办法设置LinearLayout scaleType属性或我是否需要更改布局?

1 个答案:

答案 0 :(得分:12)

视图的背景会根据View的大小而延伸。

ImageView支持图片缩放,要与LinearLayout一起使用,您需要一个额外的容器,它将覆盖2个孩子(例如FrameLayout):

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/bgapp"
    android:scaleType="centerCrop"/>

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