Фон урожая Android

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

Как установить фон LinearLayout чтобы он не LinearLayout ?

благодаря

Solutions Collecting From Web of "Фон урожая Android"

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

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

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

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

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

Поместите этот код в активность 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" />