在LinearLayout中缩放背景图像

时间:2011-04-29 15:21:30

标签: android layout

我遇到以下问题;

我有一个LinearLayout,里面有一个ScrollView,在ScrollView中是一些自定义视图。现在我想在LinearLayout的背景中放置一个图像并保持图像的原始大小。但是当我设置LinearLayout的背景属性时,它会拉伸以适应整个屏幕。如何才能使图像保持原始尺寸?

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/root"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/some_drawable">
  <ScrollView
    android:id="@+id/scrollview"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:fillViewport="true">
    <some.custom.layout
        android:id="@+id/mainLayout"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        />
  </ScrollView>
</LinearLayout>

5 个答案:

答案 0 :(得分:23)

Egor答案的代码示例:

<FrameLayout
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    >

    <ImageView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/background"
        />

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

    </LinearLayout>

</FrameLayout>

答案 1 :(得分:20)

尝试将FrameLayout与ImageView和LinearLayout结合使用。例如,尝试更改图像的alpha并将其移动到FrameLayout中的前景,因此LinearLayout保留在背景上。希望这有帮助!

答案 2 :(得分:0)

您可以查看InsetDrawable。无论是那个还是它可能都需要你将你的布局子类化为绘制你想要的方式,因为背景元素没有你需要的能力。

答案 3 :(得分:0)

根据ColdForged的建议,您可以从LinearLayout移至RelativeLayout并使用ImageView显示图片,而不是更改背景。与RelativeLayout不同,LinearLayout中的观看次数可能会受到影响。

答案 4 :(得分:0)

<RelativeLayout
    android:id="@+id/relLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.AppCompatImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/layoutLogin"
        android:layout_alignLeft="@id/layoutLogin"
        android:layout_alignRight="@id/layoutLogin"
        android:layout_alignTop="@+id/layoutLogin"
        android:adjustViewBounds="true"
        android:background="@mipmap/ic_photo_bg"
        android:scaleType="fitXY" />

    <LinearLayout
        android:id="@+id/layoutLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    </LinearLayout>

</RelativeLayout>