在Linearlayout上设置背景png而不影响布局大小

时间:2018-07-31 14:38:12

标签: java android android-layout kotlin android-linearlayout

背景图片没有填充Linearlayout并更改了大小

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="@mipmap/dashboard_background"
      android:orientation="vertical"
      android:padding="10dp">

enter image description here

理想的外观是

enter image description here

我该怎么做到?

2 个答案:

答案 0 :(得分:2)

背景始终会拉伸到其View大小。因此,您无法真正控制它的外观。取而代之的是,将ImageView作为布局中的最底元素(意味着它将放置在其他所有元素之下),并使用背景图像作为此src的来源(ImageView) ,这样您就可以使用scaleType控制背景的外观(可能要使用centerCropfitCenter)。有关scaleType here的更多信息。

最后,您的布局应如下所示:

<?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:scaleType="fitCenter"
      android:src="@mipmap/dashboard_background" />

  <FrameLayout
      android:id="@+id/content_container"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

    <!-- Put your view elements here -->

  </FrameLayout>

</FrameLayout>

答案 1 :(得分:2)

您应该使用内部带有imageview和linearlayout的框架布局

<FrameLayout
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent">

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

<LinearLayout
    ---Your Layout---
</LinearLayout>