将背景图像设置为视图会拉伸我的视图

Mar*_*ars 31 android background view

我为视图创建了一个背景图像位图,现在视图被拉伸到背景图像的大小....

这是正常的吗?

<?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/green"
        android:tileMode="repeat"/>
Run Code Online (Sandbox Code Playgroud)

这是我如何将它应用到我的视图中

v.setBackgroundResource(R.drawable.backgroundgreen);
Run Code Online (Sandbox Code Playgroud)

例如...

如果图像高度为500像素,视图高度为200像素(将wrap_content设置为高度),将图像设置为背景后,我的视图高度为500像素...

She*_*tib 35

我遇到过同样的问题.

如果背景图像的大小大于视图的大小,则视图的大小将更改为与图像的大小相匹配.


  1. 将视图放在相对布局中.
  2. 删除背景图像.
  3. 在相对布局内的视图之前添加ImageView
  4. srcImageView 设置为背景图像

    <RelativeLayout
        .
        .
        . >
    
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/yourViewId"
            android:layout_alignRight="@+id/yourViewId"
            android:layout_alignTop="@+id/yourViewId"
            android:layout_alignBottom="@+id/yourViewId"
            android:adjustViewBounds="true" 
            //this will allow the image to resize with same proportions
            android:src="@drawable/yourDrawable" />
    
        <YourView
            android:id="@+id/yourViewId"
            .
            ..
            ... />
    
      </RelativeLayout>
    
    Run Code Online (Sandbox Code Playgroud)

这一切都可以在代码中完成.

  • 我无法让它工作...仍然显示完整图像...使用您完全相同的代码:我错过了什么吗? (2认同)

MKJ*_*ekh 28

据我所知,你面临的问题不是问题,而是Android用于设计布局的方式.

这意味着您可以使用3个默认常量值设置高度和宽度:

FILL_PARENT
a要求的高度或宽度的特殊值View.FILL_PARENT意味着View希望与其父级一样大,减去父级的填充(如果有的话).从API级别8开始不推荐使用此值,并替换为MATCH_PARENT.

MATCH_PARENT
a要求的高度或宽度的特殊值View.MATCH_PARENT意味着视图希望与其父级一样大,减去父级的填充(如果有的话).在API Level 8中引入.

WRAP_CONTENT
a要求的高度或宽度的特殊值View.WRAP_CONTENT意味着View想要足够大以适应自己的内部内容,考虑自己的填充.

现在,当您将View高度/宽度设置为时WRAP_CONTENT,您允许视图采用足以显示以查看内容的大小.背景图像也是View内容,因此您将显示与图像一样大的视图.这不是问题,这就是它的表现方式.

好的,但是在你的情况下,这对你来说是一个问题,因为你有一个展示的背景,不应该为此展开观看.我可以提出几点建议:

  1. 首先也非常明显:制作尺寸正确的图像并将它们保存在不同的可绘制文件夹中.

  2. 指定不使用常量的视图大小,但在DP中.如果有必要,请为不同大小制作不同的布局XML文件,并将它们保存在布局文件夹中.

  3. 你可以使用一个非常有用的东西来设计布局是布局重量.

  • 弗兰肯斯坦你是对的.然而在android中似乎无论layout_width和layout_height,BACKGROUND都将始终确定视图的大小:(!您的解决方案是正确的但我认为他们应该允许相反的逻辑:视图决定了背景的大小并一次又一次地谢谢! (3认同)