마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

removeRule 대신할 방법 없을까요??

0 추천
안녕하세요, 안드로이드 초보 개발자입니다.

상황에 따른 뷰 구성 변경을 위해 RelativeLayout의 removeRule을 사용하고 있습니다.

그런데, 이거 확인을 해보니... API 레벨 17부터 추가된 사항이더라구요.

그 이전 버전에 대해서는 앱이 죽어버리네요 ㅠ (메소드를 찾을수 없다는 페이탈에러와 함께)

예외처리(try-catch)할까 하였으나... 그럼 죽지는 않겠지만 뷰가 원하는 대로 변경되지 않는 문제가 발생할것 같습니다. ㅠ

 

혹시 removeRule을 대신할 방법이 없을까요??

 

현재 다음과 같은 상황에 에러가 발생하고 있습니다.

1. params.addRule(ALIGN_PARENT_RIGHT)

2. params.addRule(LEFT_OF, id) // addRule만 해주면 ALIGN_PARENT_RIGHT이 남아있어서 적용이 안됨.

3. params.removeRule(ALIGN_PARENT_RIGHT)
블랙이요블랙 (12,860 포인트) 님이 2015년 4월 10일 질문
구글링해서 해결방안 찾았습니다.
(http://stackoverflow.com/questions/19916247/remove-rule-from-relativelayout-before-api-17)

addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0);

위와 같이 해주면 된다고 하네요 ㅎ

1개의 답변

+1 추천
 
채택된 답변
RelativeLayout.LayoutParams 객체를 새로 생성해서 addRule(LEFT_OF, id) 만 적용한 뒤

setLayoutParams 하면 안되나용?
Gradler (109,780 포인트) 님이 2015년 4월 10일 답변
블랙이요블랙님이 2015년 4월 10일 채택됨
답변 감사합니다.
위의 상황설명은 단순하게 보여주기 위해서 저렇게 써놓은거고
실제로 params 객체는 모두 다른겁니다.
addRule로 해당 뷰에 ALIGN_PARENT_RIGHT를 넣어놓으면
이후에 다시 그 뷰의 params을 받아와서 addRule(LEFT_OF, id) 해주어도
ALIGN_PARENT_RIGHT가 남아있어서 정상적으로 적용이 되지 않았습니다.

좀 더 구글링해서 해결 방안 찾았습니다.
다시 한번 답변 감사합니다! 즐거운 하루 되세요~
...