Android - 如何停止在LinearLayout上拉伸背景图片

3

我在LinearLayout上设置了一张图片作为背景。这是代码:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/mainbg"
    android:orientation="vertical"
    android:padding="5dp"
    >

问题是图片的宽度大约为2000px,我不想缩小它以适应屏幕,我只想显示尽可能多的背景而不拉伸它。
如何做到这一点?
谢谢

取一个ImageView并使用ImageView的ScaleType。 - Anand Savjani
3个回答

7

在您的布局中添加一个图像视图,并将其比例类型设置为centerCrop。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="5dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/mainbg" />

</LinearLayout>

检查图像的缩放类型: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html


5
你可以使用RelativeLayout,将scaleType的ImageView放在其中,并且使用包含所有内容的LinearLayout。
<RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent">

<ImageView 
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:src="@drawable/mainbg"
   android:scaleType="centerCrop"/>

  <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:padding="5dp">

    -----Your Content----

  </LinearLayout>
</RelativeLayout>

这个答案对我有用,只是要小心Relativelayout闭合标签中间的L字母需要大写。 - Techi50

0

你可以用两种方式来做事...

  1. 适应整张图片(不裁剪或留下照片的一部分)。 使用垂直ScrollView + 水平ScrollView组合,并将您的布局用作第一个子项。

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ScrollView>
    <HorizontalScrollView
        android:id="@+id/horizontalScrollView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/a"
        android:orientation="vertical">
    </LinearLayout>
    
  2. 您可以使用自定义视图

自定义滚动视图

package com.scrollable.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class VScroll extends ScrollView {

    public VScroll(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public VScroll(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public VScroll(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}

你可以参考在Android中实现垂直和水平的ScrollView...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接