-1

當我移動我的RelativeLayout時,其中的ImageView增加了大小以填充整個屏幕的寬度,我遇到了一個煩人的問題。我用彩色背景替換了圖像,以便更容易看到。當移動RelativeLayout(Android)時,ImageView的大小略有增加

不介意它的外觀,佈局是WIP

GIF這裏要說明的問題:https://gyazo.com/ae31b8e70e4f96fe89ba041549db22bb

下面是我OnTouchListener代碼

private View.OnTouchListener relativeListener = new View.OnTouchListener() 
{ 
    @Override 
    public boolean onTouch(View view, MotionEvent event) 
    { 
     final int X = (int) event.getRawX(); 
     switch (event.getAction() & MotionEvent.ACTION_MASK) { 
      case MotionEvent.ACTION_DOWN: 
       LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) view.getLayoutParams(); 
       _xDelta = X - lParams.leftMargin; 
       break; 
      case MotionEvent.ACTION_UP: 
       break; 
      case MotionEvent.ACTION_POINTER_DOWN: 
       break; 
      case MotionEvent.ACTION_POINTER_UP: 
       break; 
      case MotionEvent.ACTION_MOVE: 
       LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams(); 
       layoutParams.leftMargin = (X - _xDelta); 
       layoutParams.rightMargin = -(X - _xDelta); 
       view.setLayoutParams(layoutParams); 
       break; 
     } 
     _root.invalidate(); 
     return true; 
    } 
}; 

以下是定義ImageView和RelativeLayout的xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="me.tech.myapp.Fragments.HomeFragment"> 
<TextView 
    android:id="@+id/tvCurrentTheme" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_margin="16dp" 
    android:text="StringCurrentTheme" 
    android:textAlignment="center" 
    android:textSize="18sp" /> 

<RelativeLayout 
    android:id="@+id/relativeRoot" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="8dp"> 

    <ImageView 
     android:id="@+id/ivMainImage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:contentDescription="Foto jonguh" 
     android:cropToPadding="false" 
     android:scaleType="centerCrop" 
     app:srcCompat="@android:color/holo_blue_bright" /> 

    <Button 
     android:id="@+id/btnReportImage" 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignTop="@+id/ivMainImage" 
     android:layout_margin="16dp" 
     android:background="@drawable/ic_menu_send" 
     android:visibility="visible" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fabSendImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@+id/btnReportImage" 
     android:layout_alignParentBottom="true" 
     android:layout_marginEnd="17dp" 
     android:clickable="true" 
     app:backgroundTint="@android:color/holo_orange_dark" 
     app:elevation="4dp" 
     app:fabSize="normal" 
     app:srcCompat="@drawable/ic_menu_camera" /> 

</RelativeLayout> 
</LinearLayout> 
+0

你想用'MotionEvent.ACTION_MOVE'實現什麼?爲什麼在'Imageview'中使用'cropToPadding =「false」'? –

+0

感謝您的回覆!這是我的理解,'MotionEvent.ACTION_MOVE'是必需的,因爲我一直在檢測用戶手指在屏幕上被按下的位置(糾正我,如果我錯了)。 ''cropToPadding =「false」'也是以後需要的(我不確定它是否默認爲false) –

+0

@ Tonteria24但是它的工作原理與這個一樣,只是這個小問題 –

回答

0

通過固定它只需在代碼中手動更改寬度。

0
android:scaleType="fitCenter" 
android:adjustViewBounds="true" 

嘗試將這些將屬性添加到ImageView的

+0

感謝您的回覆!不幸的是,這些變化並沒有解決問題,我還需要有centerCrop,因爲它將在以後變得非常重要。 –

0

,這是正常的的ImageView佔據整個版面,如果你有

<ImageView 
     android:id="@+id/ivMainImage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
.... 

嘗試WRAP_CONTENT代替match_parent

+0

但它需要填充儘可能寬的寬度,這就是爲什麼我要像'android:layout_margin =「8dp」'。 –