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

Фон урожая Android

У меня есть LinearLayout с шириной, установленной на fill_parent и высотой до wrap_content. Теперь я хочу дать ему фон из png файла, но традиционным способом это приведет к изменению размера LinearLayout, чтобы показать весь фон вместо обрезки дополнительной части.

Как установить фон LinearLayout, чтобы он не изменялся?

Спасибо

4b9b3361

Ответ 1

Похоже, что такая вещь достижима только с помощью ImageView и установки параметра scaleType. Быстрое обходное решение - использовать FrameLayout и поместить ImageView под другой макет с прозрачным фоном.

код:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

    <ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/background" />

</FrameLayout>

Ответ 2

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

Проверьте следующую ссылку и найдите возможные значения силы тяжести. Затем ваш взгляд должен просто ссылаться на ресурс, который вам подходит, и вы должны быть в порядке.

http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap

Ответ 3

Я решил это путем подклассификации LinearLayout и переопределения обратного вызова onMeasure(int,int), а затем обновления XML-макета для использования моего нового типа макета. Я не могу опубликовать этот точный код, но то, что я сделал, вызывало реализацию super.onMeasure(int,int) и проверяло, вернулась ли измеренная высота в качестве точной высоты моего фонового изображения. Если это так, я беру измеренную высоту всех дочерних представлений, а затем вычисляю новое значение высоты и передаю его в setMeasuredDimension(int,int).

Ответ 4

поместите этот код в активность xml, например activity_main.xml

<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/image" />