动态更改ImageView位置在Android中不起作用

时间:2014-12-04 12:01:45

标签: android android-animation android-imageview android-relativelayout android-layoutparams

我的Activity ImageView位于RelativeLayout内,我希望能够将ImageView移到RelativeLayout内,当我删除我的手指我希望ImageView回到原来的位置。

我尝试了以下内容:

mImageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                mImageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

                int[] locations = new int[2];
                mImageView.getLocationOnScreen(locations);
                //mImageView.getLocationInWindow(locations);
                mOldX = locations[0];
                mOldY = locations[1];

                System.out.println("X: " + mOldX + " Y: " + mOldY);
            }
        });

up的{​​{1}}行动中,我尝试了以下内容:

  1. OnTouchListenersetX(不工作)
  2. setYsetLeft(不工作)
  3. setTop(不工作)
  4. 那么任何人都可以告诉我该怎么做吗?

    修改

    活动setLayoutParams

    xml

    活动代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical" >
    
        <include
            android:id="@+id/custom_header_layout"
            layout="@layout/item_header" />
    
        <TextView        
            android:id="@+id/push_to_start_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/largest_margin"
            android:text="@string/push_to_start_recording"
            android:textSize="@dimen/larger_text_size"
            android:visibility="visible"
            />
    
        <TextView     
            android:id="@+id/timer_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/medium_margin"
            android:text="00:00"
            android:textSize="55sp"
            />
    
        <TextView
            android:id="@+id/status_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/large_margin"
            android:text="@string/recording"
            android:textSize="@dimen/larger_text_size"
            android:visibility="invisible"
            />
    
        <RelativeLayout
            android:id="@+id/parentLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <ImageView
                android:id="@+id/record_imageview"
                android:layout_width="@dimen/record_audio_image_size"
                android:layout_height="@dimen/record_audio_image_size"
                android:layout_centerHorizontal="true"
                android:src="@drawable/post_done" />
    
            <ImageView
                android:id="@+id/cancel_imageview"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="@dimen/large_margin"
                android:src="@drawable/post_cancel" />
        </RelativeLayout>
    
    </LinearLayout>
    

1 个答案:

答案 0 :(得分:0)

尝试在之前调用mImageView.requestLayout() 设置新位置。如果无效,请尝试在后设置新位置时调用mImageView.invalidate()

如果它仍然不起作用,请在设置位置时发布代码(您尝试的3种方式)。