보기의 여백 얻기


95

활동에서 뷰의 마진 값을 어떻게 얻을 수 있습니까? 보기는 모든 유형이 될 수 있습니다.

약간의 검색 후 뷰 패딩을 얻는 방법을 찾았지만 Margin에서 아무것도 찾을 수 없습니다. 누구든지 도울 수 있습니까?

나는 이와 같은 것을 시도했다.

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

이것은 작동하지만 위의 코드에서 뷰가 LinearLayout. 하지만 margin뷰 유형을 모르는 경우에도 속성을 가져와야합니다.

답변:


180

이 시도:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

여백은 다음을 통해 액세스 할 수 있습니다.

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

편집 : 아마도 ViewGroup.MarginLayoutParams당신을 위해 일할 것 입니다. 다른 LayoutParams.

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


7
실제로 나는 이와 같은 것을 기대하고 있었지만라는 직접적인 클래스는 없다고 생각 LayoutParams합니다. FrameLayout.LayoutParams, 와 같은 클래스가 RelativeLayout.LayoutParams있지만 LayoutParams그 자체로는 전혀 다릅니다. 그리고 뷰의 유형을 모르기 때문에 이전 클래스를 사용할 수 없습니다.
Arnab Chakraborty 2011

5
대해 ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();다음?
Vladimir

ViewGroup.MarginLayoutParams 여야합니다. lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams ();
rockhammer


4

이제이 편집 된 코드를 사용하십시오. 이것은 당신을 도울 것입니다

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin

언급 한 방법은 뷰의 왼쪽, 오른쪽, 위쪽 및 아래쪽 위치를 제공하므로 여백이 필요합니다.
Arnab Chakraborty 2011

반드시 그런 것은 아닙니다. 뷰 LinearLayouthorizontal방향 과 함께 배치 될 수 있습니다. 레이아웃의 두 번째 뷰인 경우 view.getLeft()메서드는 왼쪽 좌표를 제공하지만 인접한 뷰에서 뷰의 왼쪽 여백을 제공합니다.
Arnab Chakraborty 2011

보기가 LinearLayout?
Arnab Chakraborty 2011

3

다른 사람들이 제안했듯이 layout_margin #은 부모의 # 가장자리와보기 사이의 공간입니다.

  • # "Left", "Right", "Top"또는 "Bottom"을 대체합니다.

여백 가져 오기 / 설정은 다음과 같이 저에게 효과적이었습니다.

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();

물론 내 View는 실제로 ViewGroup이었고 부모도 ViewGroup이었습니다. 대부분의 경우 레이아웃 매개 변수를 부모의 View 클래스 LayoutParams (이 경우 ViewGroup 및 RelativeLayout)로 캐스팅해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.