У меня есть 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, которые выровнены повзгляды стороны вообще не двигаются
что я делаю не так?