97

アクティビティからビューのマージン値を取得するにはどうすればよいですか?ビューはどのタイプでもかまいません。

少し検索した後、ビューのパディングを取得する方法を見つけましたが、マージンには何も見つかりませんでした。誰か助けてもらえますか?

私はこのようなことを試みました、

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

これは機能しますが、上記のコードでは、ビューを。と想定していますLinearLayoutmarginただし、ビュータイプがわからない場合でも、属性を取得する必要があります。

4

4 に答える 4

183

これを試して:

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

于 2011-09-19T08:09:10.900 に答える
35

試す

ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin

これは、少なくとも私の見解に対して正しい利益を返しました。

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

于 2011-10-28T09:42:06.337 に答える
5

ここで、この編集されたコードを使用します。これはあなたを助けます

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

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin
于 2011-09-19T08:26:51.990 に答える
3

他の人が示唆しているように、layout_margin#は、親の#エッジとビューの間のスペースです。

  • #「Left」、「Right」、「Top」、または「Bottom」を置き換えます

マージンの取得/設定は次のように機能しました。

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

もちろん、私のビューは確かにViewGroupであり、親もViewGroupでした。ほとんどの場合、レイアウトパラメータを親のViewクラスLayoutParams(この場合はViewGroupとRelativeLayout)にキャストする必要があります。

于 2014-05-05T12:11:42.110 に答える