代码之家  ›  专栏  ›  技术社区  ›  Hudi Ilfeld

安卓:布局在RelativeLayout不工作时,我把x设置在左视图

  •  2
  • Hudi Ilfeld  · 技术社区  · 6 年前

    我有一个 RelativeLayout ImageView View 图片框 s与 视图 图片框

    这样地:

    <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;
                }
            };
    

    我做错什么了?

    0 回复  |  直到 6 年前