Ответ 1
ОК, так что эта ветка немного старая, но у меня есть решение, которое кто-то может когда-нибудь найти полезным. Я думаю, что у Android проблемы с масштабированием больших изображений вниз, поэтому размер LinearLayout заканчивается тем, что он сталкивается с растровым рисунком, и ImageView приводит к увеличению размера родительского контейнера.
Если вы не используете относительный макет. Вы можете сделать ImageView относительно позиции LinearLayout, даже если ImageView находится за макетом в родительском. Мое решение выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:src="@drawable/activation_popup"
android:scaleType="fitXY"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignTop="@+id/activation_layout"
android:layout_alignBottom="@id/activation_layout"
android:layout_alignLeft="@id/activation_layout"
android:layout_alignRight="@id/activation_layout"
android:contentDescription="@string/act_code_label" />
<LinearLayout
android:id="@id/activation_layout"
android:clipToPadding="true"
android:padding="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- LinearLayout wraps a bunch of smallish views here -->
</LinearLayout>
</RelativeLayout>
Я пробовал это на вершине размеров дисплея и версий ОС, кажется, отлично работает. Обратите внимание, что дополнение в LinearLayout - это трюк, чтобы сделать пространство для тени на графике фонового изображения. LinearLayout не требует никакого относительного позиционирования, потому что предполагается, что верхний левый.