39

我正在尝试将我的根 LinearLayout 元素(在两个维度上都设置为 fill_parent)设置为具有始终位于屏幕左下角的背景图像,无论设备的方向如何。如果有某种方法可以设置背景图像位置,例如您可以使用“背景位置:左下角”对 css 进行的设置,那就太好了。但我没有看到在 Android 中实现这一目标的方法。有没有办法做到这一点?

谢谢您的帮助。

4

4 回答 4

84

您必须使用 XML 文件中的位图创建一个可绘制的自定义位图(例如“res/drawables/my_drawable.xml”

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

然后将此可绘制 xml 设置为视图的背景(“@drawables/my_drawable”)。不过,可绘制的 XML 格式在 Android 站点中的文档非常少,因此要弄清楚如何自行解决绝对不是一个容易的问题。

于 2010-05-06T14:56:56.767 回答
8

如果发现以编程方式执行此操作的优势:图像适合布局而不是更大。不知道为什么。

编码:

Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.image);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
bitmapDrawable.setGravity(Gravity.BOTTOM|Gravity.RIGHT);
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root);
layout.setBackgroundDrawable(bitmapDrawable);
于 2011-11-07T18:30:55.117 回答
1

将您的 LinearLayout 包装成 RelativeLayout 并向其添加 ImageView。使用 android:layout_alignParentBottom 和 android:layout_alignParentLeft 您可以将图像放在左下方。

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

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/my_image" />

    <LinearLayout
        android:id="@+id/linearLayout"
        ... >

确保 ImageView 是在背景中绘制图像的 RelativeLayout 的第一个元素。

于 2012-10-08T10:32:52.010 回答
0

我的回答只是上述答案的更新如果您使用 XML 作为背景,则可能会出现纵横比问题

所以使用这个代码

Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.image);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
  bitmapDrawable.setGravity(Gravity.BOTTOM| Gravity.RIGHT| Gravity.FILL_HORIZONTAL);
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root);
layout.setBackgroundDrawable(bitmapDrawable);

Gravity.Fill_HORIZONTAL 将适合您在其上应用背景的布局宽度,您也可以在 XML 文件中提及这一点,但正如我所说,它会出现图像比例问题

于 2017-08-31T17:47:05.120 回答