Предотвратить показ изображений в ImageView

У меня есть линейный макет, который содержит изображение и другой линейный макет, который является нижней панелью на экране. Я использую нижнюю панель в другом месте моего проекта, и я не думаю, что это проблема.

Проблема в том, что изображение просматривает весь экран. Сам образ не делает, но вид делает. Кажется, я не понимаю этого. Как вы можете видеть в моем xml, я не использую fill_parent для представления изображения, и я пробовал все возможные типы scaleType для изображения.

Какие-либо предложения? Также, если это помогает, я создаю Android API 8

Изменить: я изменил xml ниже, чтобы вы могли точно использовать то, что я написал. (Это изображение, которое я использую в представлении изображения: http://i.imgur.com/qN5aT.jpg )

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#FFFFFF" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitStart" android:src="@drawable/quote_sample_img" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is text" /> </LinearLayout> </LinearLayout> 

Http://i.imgur.com/m3msH.png (Извините, недостаточно репутации, чтобы опубликовать фактическое изображение)

Кажется, что все работает, если в ImageView добавлен android: layout_weight = "1.0".

(Я не уверен, что именно происходит и в каком порядке в алгоритме компоновки, поэтому не могу объяснить, почему.)

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#FFFFFF" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:scaleType="fitStart" android:src="@drawable/quote_sample_img" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is text" /> </LinearLayout> </LinearLayout> 

Это изображение wrap_content в изображении – исходный файл, вероятно, слишком высок.

Используйте это в своем ImageView, чтобы вызвать изменение области изображения до нового размера изображения после масштабирования:

 android:adjustViewBounds="true" 

Я также изменил бы высоту ImageView, чтобы он заполнил экран и заставил ваш бар всегда находиться внизу:

 android:layout_height="0dip" // faster than match_parent for weight android:layout_weight="1.0" 

Я думаю, проблема может заключаться в том, что изображение, которое вы использовали, больше, чем экран, так что ImageView имеет высоту, установленную на высоту доступного пространства для наилучшего соответствия изображению, не оставляя места ни для чего другого.

Кроме того, если вы хотите, чтобы нижняя панель была видимой, лучше использовать RelativeLayout, а именно:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Main" android:orientation="vertical" > <LinearLayout android:id="@+id/bottom_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" android:layout_alignParentBottom="true" android:orientation="vertical" > <include layout="@layout/browse_bottom_bar" /> </LinearLayout> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/bottom_bar" android:src="@drawable/quote_sample_img" /> </RelativeLayout> 

У меня очень похожая проблема, размещенная на https://stackoverflow.com/questions/9765401/imageview-with-adjustviewbounds-seems-to-ignore-following -elements

Похоже, что ImageView НЕ сжимается после масштабирования изображения, ЕСЛИ вы указываете adjustviewbounds = "true".

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