2012-03-08 2 views
1

Monodroid (C#)에서이 작업을 수행하고 있지만 어쨌든 대부분의 사람들이 이해할 것이라고 확신합니다. 인터뷰에서 특정 텍스트 뷰를 이동해야합니다. 첫 번째 부모 왼쪽으로 정렬 잘 작동합니다. 그런 다음 4 초를 기다렸다가 부모의 오른쪽 정렬을 원합니다. 아무런 효과가 없습니다. 그것은 왼쪽으로 유지됩니다. 어째서?LayoutParams를 두 번 설정하면 효과가 없습니까?

예 (C#을)

RelativeLayout.LayoutParams newParams = (RelativeLayout.LayoutParams)textView.LayoutParameters; 
newParams.AddRule(LayoutRules.AlignParentLeft); 
textView.LayoutParameters = newParams; 


System.Threading.Thread.Sleep(4000); 

RelativeLayout.LayoutParams newParams2 =(RelativeLayout.LayoutParams)textView.LayoutParameters; 
newParams2.AddRule(LayoutRules.AlignParentRight); 
textView.LayoutParameters = newParams2; 

는 1 시간 완벽한 작동하기 때문에 정말 이상한 ..

답변

1

새로운 레이아웃 매개 변수를 설정 한 후, 당신은 효과를 적용하려면보기에 requestLayout()를 호출해야합니다.

requestLayout()이 뷰의 레이아웃 을 무효화시킨이 일이 변경 될 때

전화. 그러면 뷰 트리의 레이아웃 단계가 예약됩니다.

그래서 당신은 호출해야합니다 :

textViewToAnimate.requestLayout(); 
+0

는 시도 모두이 효과 :( –

+0

없이 ForceLayout는() 당신은 또한 textViewToAnimate.invalidate()'시도,' – waqaslam

+0

불행하게도 네 .. –

관련 문제