android: layout_toLeftOf в RelativeLayout не работает, когда я устанавливаю X в левом представлении - PullRequest
0 голосов
/ 04 июня 2018

У меня есть RelativeLayout, который содержит два ImageView s и View между ними, оба ImageView s выровнены по отношению к брату View [т.е. вправо ImageView выровнено по правой стороневид, то же самое с левым].

примерно так:

<RelativeLayout
    android:id="@+id/rootLayout"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:orientation="horizontal"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="106dp">


    <ImageView
        android:id="@+id/img1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/euqualizer"
        android:scaleType="fitXY"
        app:srcCompat="@mipmap/ic_launcher_round" />

    <View
        android:id="@+id/euqualizer"
        android:layout_width="20dp"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:background="#000" />

    <ImageView
        android:id="@+id/img2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_toRightOf="@+id/euqualizer"
        android:layout_alignParentRight="true"
        android:scaleType="fitXY"
        app:srcCompat="@mipmap/ic_launcher" />
</RelativeLayout>

и в коде Java я хочу переместить местоположение вида в соответствии с направлением движения касания, т.е. используя setX () в представлении.

примерно так:

  img1.setOnTouchListener(touchListener);
  img2.setOnTouchListener(touchListener);
  View.OnTouchListener touchListener = new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:

                            startDrag_X = event.getX();
                            break;
                        case MotionEvent.ACTION_MOVE:

                            float x_delta = event.getX() - startDrag_X;
                            euqualizer.setX(euqualizer.getX() + x_delta);

                            break;
                        case MotionEvent.ACTION_UP:

                            startDrag_X = -1;
                            break;
                    }
                    return true;
            }
        };

Но по некоторым причинам, хотя представление успешно перемещает себя, как я ожидал, но ImageViews, которые выровнены повзгляды стороны вообще не двигаются

что я делаю не так?

...