2010-08-16 6 views
1

저는 작업중인 사용자 정의 TextView에이 이상한 문제가 있습니다. 뷰를 손가락으로 드래그하여 이동하려고하므로 터치 위치를 얻고 수학을 수행하고 해당하는 왼쪽 여백과 상한을 설정합니다. 그것은 작동하지만 아주 이상한 행동을합니다. leftMargin 부분은 완벽하게 작동하지만 topMargin은 매우 불안정합니다. 올바른 위치와 그 아래 25 픽셀 위치 사이에서 진동하는 것처럼 보입니다. 뷰를 계속 드래그하지 않고 탭할 때마다 매번 25 픽셀 씩 아래로 이동합니다. 왜 이런 사람이 될 수 있는지 아는 사람 있습니까? 관련 코드는 다음과 같습니다.LayoutParams 여백을 설정하는 이상한 버그

 case MotionEvent.ACTION_MOVE : 
{  
    final float x = event.getX(); 
    final float y = event.getY(); 

    final float newMarginX; 
    final float newMarginY; 

    positionX = x; 
    positionY = y; 

    newMarginX = oldMarginX - (lastTouchX - positionX); 
    newMarginY = oldMarginY - (lastTouchY - positionY); 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(this.getWidth(), this.getHeight()); 
    params.leftMargin = (int) newMarginX; 
    params.topMargin = (int) newMarginY; 
    this.setLayoutParams(params); 
    this.setText(Float.toString(y)); 

    lastTouchX = positionX; 
    lastTouchY = positionY; 

    oldMarginX = newMarginX; 
    oldMarginY = newMarginY; 

    break;  
} 
+0

아이디어가 없습니까? 제발, 나는 이것을 알아 내려고 미쳤어 요. – dima1109

답변

0

확인 중력을 설정합니다

params.gravity = Gravity.LEFT 

을 여백을 조정하기 전에.