Как разместить дочерние элементы ConstraintLayout за пределами экрана (чтобы потом я мог перевести их на экран)? - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь создать динамический c ConstraintLayout с закадровым элементом, который я могу перевести позже. Однако я не могу заставить элемент запускаться за пределами экрана.

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <ImageView
        android:id="@+id/onscreen_iv"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />
    <ImageView
        android:id="@+id/offscreen_iv"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>

Установив левую часть изображения справа от полноэкранного макета, изображение должно быть вне экрана - не так ли? Вместо этого в результате offscreen_iv располагается прямо над onscreen_iv. РЕДАКТИРОВАТЬ: результат будет таким же, если я установил offscreen_iv справа от onscreen_iv, а не справа от родителя.

Кажется, это связано с установкой ширины в match_parent, как если бы я установил ее на необработанное число, похоже, работает, но, конечно, неправильного размера. Мне нужно, чтобы мое изображение было шириной экрана.

Благодарю за помощь!

Ответы [ 3 ]

1 голос
/ 03 августа 2020

Интересная проблема.

Я нашел способ заставить ваш offscreen_iv исчезнуть, поместив ваше изображение поверх parent.

Вы все еще можете оставить android:layout_width="match_parent"

Попробуйте это:

<ImageView
    android:id="@+id/offscreen_iv"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="parent" />
1 голос
/ 03 августа 2020

Вы можете использовать свойство android:translationX="400dp" в любом представлении и анимировать это свойство с помощью Property Animators. Установите значение 0, чтобы получить позицию по умолчанию.

Другие параметры включают

android:translationY="400dp"
android:translationZ="400dp"
1 голос
/ 03 августа 2020

Вы должны установить offscreen_iv rightOf onscreen_iv

<ImageView
    android:id="@+id/onscreen_iv"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />
<ImageView
    android:id="@+id/offscreen_iv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toRightOf="@id/onscreen_iv" />

Установить offscreen_iv невидимым

Если вы хотите сдвинуть его справа налево, создайте перевод внутри папки anim

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0%p"
        android:duration="5000" />
</set>

Затем запускаем анимацию

offscreen_iv.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(),
                        R.anim.translate));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...