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