Фон урожая Android
У меня есть LinearLayout
с шириной, установленной на fill_parent
и высотой до wrap_content
. Теперь я хочу дать ему фон из png файла, но традиционным способом это приведет к изменению размера LinearLayout
, чтобы показать весь фон вместо обрезки дополнительной части.
Как установить фон LinearLayout
, чтобы он не изменялся?
Спасибо
Ответы
Ответ 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" />