In Android, how do I set margins in dp programmatically? In Android, how do I set margins in dp programmatically? android android

In Android, how do I set margins in dp programmatically?


You should use LayoutParams to set your button margins:

LayoutParams params = new LayoutParams(        LayoutParams.WRAP_CONTENT,              LayoutParams.WRAP_CONTENT);params.setMargins(left, top, right, bottom);yourbutton.setLayoutParams(params);

Depending on what layout you're using you should use RelativeLayout.LayoutParams or LinearLayout.LayoutParams.

And to convert your dp measure to pixel, try this:

Resources r = mContext.getResources();int px = (int) TypedValue.applyDimension(        TypedValue.COMPLEX_UNIT_DIP,        yourdpmeasure,         r.getDisplayMetrics());


LayoutParams - NOT WORKING ! ! !

Need use type of: MarginLayoutParams

MarginLayoutParams params = (MarginLayoutParams) vector8.getLayoutParams();params.width = 200; params.leftMargin = 100; params.topMargin = 200;

Code Example for MarginLayoutParams:

http://www.codota.com/android/classes/android.view.ViewGroup.MarginLayoutParams


Best way ever:

private void setMargins (View view, int left, int top, int right, int bottom) {    if (view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {        ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams();        p.setMargins(left, top, right, bottom);        view.requestLayout();    }}

How to call method:

setMargins(mImageView, 50, 50, 50, 50);

Hope this will help you.