アクティビティからビューのマージン値を取得するにはどうすればよいですか?ビューはどのタイプでもかまいません。
少し検索した後、ビューのパディングを取得する方法を見つけましたが、Marginで何も見つかりませんでした。誰でも助けることができますか?
私はこのようなことを試みました、
ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;
これは機能しますが、上記のコードでは、ビューをLinearLayout
と想定しています。ただし、ビュータイプがわからない場合でも、margin
属性を取得する必要があります。
これを試して:
View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();
マージンは
lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;
edit:おそらくViewGroup.MarginLayoutParams
はあなたのために働きます。他のLayoutParams
の基本クラスです。
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
http://developer.Android.com/reference/Android/view/ViewGroup.MarginLayoutParams.html
試して
ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()
vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin
これにより、少なくとも私の見解では正しいマーゲインが返されました。
http://developer.Android.com/reference/Android/view/ViewGroup.MarginLayoutParams.html
この編集済みコードを使用してください。これはあなたを助けます
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();
lp.leftMargin // for left margin
lp.rightMargin // for right margin
他の人が提案したように、layout_margin#は親の#Edgeとビューの間のスペースです。
マージンの取得/設定は私のために働いた:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();
もちろん、私のViewは確かにViewGroupであり、親もViewGroupでした。ほとんどの場合、レイアウトパラメーターを親のViewクラスLayoutParams(この場合はViewGroupおよびRelativeLayout)にキャストする必要があります。