#android #android-layout
#Android #android-макет
Вопрос:
Итак, я разрешаю пользователю перетаскивать 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, который занимает весь экран. Когда пользователь перемещает его, я изменяю левое и верхнее поля. Я вижу странную проблему, когда, когда макет достигает правого или нижнего краев экрана, макет (и, следовательно, изображение, которое он переносит) …
- Обрезается с левой стороны, поскольку правая сторона макета выходит за пределы правой части экрана
- Обрезается с верхней стороны, поскольку нижняя сторона макета выходит за нижнюю часть экрана.
При перетаскивании макета к левому краю или верхнему краю экрана проблем вообще не возникает.
Я попытался изменить scaleType ImageView на все другие значения, прежде чем понял, что проблема, похоже, заключается в том, что на самом деле причиной этого является окружающий RelativeLayout (например, когда я меняю scaleType ImageView на fitXY, изображение сжимается до крошечного размера, поскольку макет перетаскивается за край экрана).
Я также пытался переключать все параметры макета, которые мог найти, включая clipChildren, clipPadding, adjustViewBounds, margin, padding и т.д., И ничего, что действительно работало. Я ломаю голову над этой простой проблемой, которая, как я думал, должна работать только с параметрами по умолчанию. Чтобы было понятно, я ожидаю, что при перетаскивании макета за край экрана часть, которая находится за пределами экрана, просто больше не отображается, а материал, который находится на экране, остается как есть.
Ответ №1:
Я не думаю, что Margin обычно позволяет отображать часть вашего представления за пределами экрана. Вам придется увеличить поле, чтобы margin size < родительский размер (чтобы он оставался на экране). Однако вы могли бы попробовать установить отрицательное правое и нижнее поле (сомневаюсь, что это сработает).