2014-09-09 2 views
1

코드로 여백을 설정하려고합니다. 그럼에도 불구하고 시작과 끝 마진을 설정하는 데 문제가 있습니다. setMarginStart 및 setMarginEnd 메소드를 사용하는 이상한 이유 때문에 뷰 왼쪽 및 오른쪽 여백을 수정하지 않습니다.안드로이드에서 setMarginEnd 및 setMarginStart를 사용할 때의 문제

RelativeLayout.MarginLayoutParams params = (RelativeLayout.MarginLayoutParams) loopMainLayout.getLayoutParams(); 
    float fabRadius = context.getResources().getDimension(R.dimen.fab_size)/2; 
    params.bottomMargin = (int) (params.bottomMargin + fabRadius); 
    params.topMargin = (int) (params.topMargin + fabRadius); 
    params.setMarginEnd(params.getMarginEnd() + (int) fabRadius); 
    params.setMarginStart(params.getMarginStart() + (int) 
    loopMainLayout.setLayoutParams(

오전 내가 함수 호출의 모든 종류의 누락 여기 레이아웃이 끝을 계산하고 여백을 시작하자하기 위해 : 내가 사용하고 코드를 부착하는거야?

참고 : params.leftMargin 및 params.rightMargin을 사용하면 모든 항목이 정상적으로 작동합니다. 하지만 최선의 방법으로 마진을 사용하고 시작하려고합니다.

+0

안녕하세요. 동일한 문제가 있습니다. params.rightMargin 설정은 작동하지만 params.setMarginEnd()는 아무 것도하지 않습니다. 혹시 이걸 이해할 수 있었 니? – ldirer

+0

전혀 아닙니다 ... 내 생각 엔 마진 시작과 끝은 생성시에만 사용되므로 마진을 설정하는 오래된 방법을 고수해야합니다. – vicmns

답변

0

시작 및 종료 여백이 추가 된 17 미만의 API 레벨을 타겟팅하고 있습니다. 이 경우 MarginLayoutParamsCompat.setMarginStart(params, margin)을보고 문제가 해결되는지 확인하십시오.

+0

아니요, 그 경우 앱 타겟은 다음과 같습니다. 'L'미리보기는 문제가 API 레벨과 관련이 없다고 생각하는 알려진 버그가 아니면 예외입니다. – vicmns

+0

내가 링크 된 호환성 방법을 사용해 보셨습니까? 앱을 테스트하는 API 수준은 무엇입니까? – Nicklas

+0

이미 시도해 보았지만 성공하지 못했습니다. 현재 L 미리보기 만 타겟팅하고 있습니다. – vicmns

관련 문제