ImageView в RelativeLayout странно обрезается, когда layout_marginLeft или layout_marginTop установлены слишком высоко - PullRequest
3 голосов
/ 10 ноября 2011

Итак, я позволяю пользователю перетаскивать RelativeLayout, содержащийся в ImageView (а также некоторые другие вещи) по экрану.Макет оборачивает ImageView внутри, и есть еще один относительный макет, который помещает материал поверх ImageView.Примерно так:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
    />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        ... a couple text views that also fill parent

    </RelativeLayout>
</RelativeLayout>

Я устанавливаю src в ImageView динамически.

Пользователь может перетаскивать макет в другой RelativeLayout, который использует весь экран.Когда пользователь перемещает его, я меняю левый и верхний поля. Я вижу странную проблему, когда, когда макет достигает правого или нижнего края экрана, макет (и, следовательно, ImageView, который он переносит) будет ...

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

Нет проблем при перетаскивании макета к левому или верхнему краю экрана.

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

Я также пытался переключать все параметры макета, которые я мог найти, включая clipChildren, clipPadding, AdjustViewBounds, margin, padding и т. д., и ничто по-настоящему не работает.Я ломаю голову над этой простой проблемой, которая, по моему мнению, должна работать только с параметрами по умолчанию.Чтобы было ясно, я ожидаю, что когда я перетаскиваю макет за край экрана, часть, которая находится за пределами экрана, просто больше не видна, а то, что отображается на экране, остается как есть.

1 Ответ

1 голос
/ 10 ноября 2011

Я не думаю, что Margin обычно позволяет выводить часть вашего вида за пределы экрана.Вам придется максимально увеличить поле, чтобы поле + размер <родительский размер (чтобы оно оставалось на экране).Однако вы можете попробовать установить отрицательное правое и нижнее поле (сомневаюсь, что это сработает). </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...