Intereting Posts
Камера 2: невозможно записать видео в полноэкранном режиме? Как получить день, год, часы, мин. Индивидуально от формата даты «yyyy-MM-dd'T'HH: mm: ss.SSSZ»? TabHost / TabWidget – масштабировать фоновое изображение? Как сравнить текущую дату с выбранной датой в android с помощью java Есть ли способ поместить представление немного за пределы его родительского макета? Как понять чистую архитектуру VIPER? Прикрепление источника к внешней банке в проекте eclipse для android Android фиксирует все события движения и отправляет их детям Настройка полей для кнопок с помощью выталкиваемых в android Android: как получить миниатюру видео файла, который является приватным для вашего приложения? Проект проекта eclipse для экспорта Android Подкатегории меню ящика навигации Исключение класса Cast при передаче массива Serializables из одной активности в другую Захват «Enter» с помощью цифрового ввода в Android / Cordova / Knockout Ускорение шифрования?

Предотвратить показ изображений в 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".

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