Подтвердить что ты не робот

Размещение фонового изображения

Я пытаюсь установить свой корневой элемент LinearLayout (который установлен в fill_parent в обоих измерениях), чтобы иметь фоновое изображение, которое всегда находится в левом нижнем углу экрана независимо от ориентации устройства. Было бы замечательно, если бы был какой-то способ установить положение фонового изображения, например, то, что вы можете сделать с помощью css, используя "background-position: left bottom;" но я не вижу способа добиться этого в Android. Есть ли способ сделать это?

Спасибо за помощь.

4b9b3361

Ответ 1

Вам нужно будет создать настраиваемый растровый рисунок с вашим растровым изображением в 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" />

И затем установите этот drawable xml в качестве фона вашего представления ( "@drawables/my_drawable" ). Выбираемый формат XML очень плохо документирован на сайте Android, однако, это определенно не простая проблема, чтобы выяснить, как решить самостоятельно.

Ответ 2

Если вы нашли преимущество, сделав это программно: изображение соответствует макету вместо того, чтобы быть больше, чем оно. Никакой идеи, почему.

Код:

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);

Ответ 3

Оберните 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 для рисования изображения в фоновом режиме.

Ответ 4

Мой ответ - это просто обновление приведенных выше ответов Если вы используете 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, но, как я уже сказал, произойдет ошибка Image Ratio