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

Масштабирование фонового изображения в LinearLayout

У меня возникла следующая проблема:

У меня есть LinearLayout, в котором ScrollView, в ScrollView есть какое-то пользовательское представление. Теперь я хочу поместить изображение на фоне LinearLayout и сохранить изображение в исходном размере. Но когда я устанавливаю свойство фона LinearLayout, он растягивается, чтобы соответствовать всему экрану. Как я могу сделать это так, чтобы изображение сохраняло свой первоначальный размер?

Мой xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/root"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/some_drawable">
  <ScrollView
    android:id="@+id/scrollview"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:fillViewport="true">
    <some.custom.layout
        android:id="@+id/mainLayout"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        />
  </ScrollView>
</LinearLayout>
4b9b3361

Ответ 1

Попробуйте использовать FrameLayout с ImageView и LinearLayout внутри. Например, попробуйте изменить альфа изображения и перенести его на передний план в FrameLayout, таким образом LinearLayout останется на фоне. Надеюсь, это поможет!

Ответ 2

Пример кода для ответа Егора:

<FrameLayout
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    >

    <ImageView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/background"
        />

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

    </LinearLayout>

</FrameLayout>

Ответ 3

Вы можете взглянуть на InsetDrawable. Либо это, либо, скорее всего, потребует от вас подкласса вашего макета, чтобы нарисовать то, что вам нужно, поскольку фоновый элемент не обладает необходимой вам способностью.

Ответ 4

В качестве альтернативы предложению ColdForged вы можете перейти от LinearLayout в RelativeLayout и использовать ImageView, чтобы отобразить изображение вместо того, чтобы менять фон. Представления в RelativeLayout могут вмешиваться в отличие от LinearLayout.