Почему я получаю пустое пространство сверху и снизу моего ImageView в моем RelativeLayout?
Я использую относительную разметку для наложения на изображения. На всех экранах, которые я тестировал (от 2,7 до 10,1 дюйма), я всегда получаю пустое пространство поверх моего изображения. В моей IDE я всегда вижу, что моя относительная компоновка создает дополнительное пространство сверху и снизу моего изображения.
Это почему? Я установил все атрибуты высоты wrap_content
и даже добавил adjustViewBounds
приписывать.
Примечание: вы должны знать, что мое изображение намного больше по размеру, что означает, что будет какое-то масштабирование.
Спасибо за ваши советы!
Вот код:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/bgf"
android:textColor="#000000"
android:textSize="25sp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:paddingRight="5dp"
android:paddingLeft="5dp"
android:paddingBottom="5dp"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/cde"
android:contentDescription="@string/cde" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/fgh"
android:contentDescription="@string/abc" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
2 ответа
Это происходит, когда изображение уменьшается, чтобы соответствовать доступной области без потери соотношения сторон изображения. Вы получаете пустое пространство, потому что изображение сначала заняло доступную ширину, и в соответствии с соотношением сторон исходного изображения высота была уменьшена.
Чтобы получить более четкое понимание, я предлагаю вам сделать следующее:
- Установите цвет фона относительного макета на некоторый цвет
Теперь вы можете понять пространство между imageView и относительной разметкой.
После того как вы проверили это на своем устройстве, выполните следующие изменения и попробуйте снова
- Установите атрибут scaleType = "fitXY" в вашем imageView.
Это сделает изображение масштабируемым и займет всю область, доступную для imageView. (В этом случае соотношение сторон исходного изображения будет потеряно). Теперь вы узнаете, какую площадь занимает imageView.
Я полагаю, что как только вы сделаете это, вы можете сделать вывод, что:
При первом запуске, если вы установили фон относительного размера как черный, он не будет виден, поскольку imageView занимает всю область, не оставляя зазора.
Во втором запуске изображение охватит всю высоту и ширину, хотя соотношение сторон было потеряно. Отсюда вытекает, что imageView покрывает ширину и высоту, и места не осталось, это соотношение сторон изображения, т.е. проблема
Если вы получите другой результат, пожалуйста, сообщите нам, мы можем решить это
РЕДАКТИРОВАТЬ:
Пожалуйста, удалите отступы, которые вы дали для imageView тоже
У меня была точная проблема. После долгого времени борьбы я решил это, следуя этому
** /questions/26424635/kak-ubrat-lishnee-prostranstvo-vyishe-i-nizhe-imageview/26424644#26424644
и добавьте следующее в мою программу
android:adjustViewBounds="true"
Работает отлично