Почему я получаю пустое пространство сверху и снизу моего 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.

Я полагаю, что как только вы сделаете это, вы можете сделать вывод, что:

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

  2. Во втором запуске изображение охватит всю высоту и ширину, хотя соотношение сторон было потеряно. Отсюда вытекает, что imageView покрывает ширину и высоту, и места не осталось, это соотношение сторон изображения, т.е. проблема

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

РЕДАКТИРОВАТЬ:

Пожалуйста, удалите отступы, которые вы дали для imageView тоже

У меня была точная проблема. После долгого времени борьбы я решил это, следуя этому

** /questions/26424635/kak-ubrat-lishnee-prostranstvo-vyishe-i-nizhe-imageview/26424644#26424644

и добавьте следующее в мою программу

 android:adjustViewBounds="true"

Работает отлично

Другие вопросы по тегам