ビューのマージンを取得


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
実はこんな感じだったのですが、という直接クラスはないと思いますLayoutParamsFrameLayout.LayoutParams、のようなクラスがありますが、それ自体はRelativeLayout.LayoutParams好きLayoutParamsではありません。また、ビューのタイプがわからないため、以前のクラスは使用できません。
Arnab Chakraborty、2011

5
何についてViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();それから?
ウラジミール

ViewGroup.MarginLayoutParamsである必要がありますlp =(ViewGroup.MarginLayoutParams)view.getLayoutParams();
ロックハンマー2016年


4

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

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

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

あなたが言及した方法は、ビューの左、右、上、下の位置を与えるので、マージンが必要です。
Arnab Chakraborty、2011

必ずしも。ビューは多分に置くLinearLayouthorizontalオリエンテーション。レイアウトの2番目のビューの場合、このview.getLeft()メソッドは、左側の座標を、隣接するビューからのビューの左マージンに与えます。
Arnab Chakraborty、2011

ビューがの場合はどうなりますLinearLayoutか?
Arnab Chakraborty、2011

3

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

  • #「左」、「右」、「上」または「下」を置き換えます

マージンの取得/設定は私のために働きました:

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.