Размещение фонового изображения - PullRequest
36 голосов
/ 06 мая 2010

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

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

Ответы [ 4 ]

80 голосов
/ 06 мая 2010

Вам нужно будет создать собственный растровый рисунок, который можно рисовать с вашим растровым изображением в 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, поэтому определенно решить непростую проблему самостоятельно не так просто.

9 голосов
/ 07 ноября 2011

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

код:

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);
1 голос
/ 08 октября 2012

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

0 голосов
/ 31 августа 2017

Мой ответ - это просто обновление ответов выше. Если вы используете 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...