Home » Android » View.setPadding accepts only in px, is there anyway to setPadding in dp?

View.setPadding accepts only in px, is there anyway to setPadding in dp?

Posted by: admin November 29, 2017 Leave a comment

Questions:

Android View.setPadding(int left, int top, int right, int bottom) only accepts values in px but I want to set padding in dp. Is there any way around it?

Answers:

Straight to code

    int padding_in_dp = 6;  // 6 dps
    final float scale = getResources().getDisplayMetrics().density;
    int padding_in_px = (int) (padding_in_dp * scale + 0.5f);

Questions:
Answers:

If you define the dimension (in dp or whatever) in an XML file (which is better anyway, at least in most cases), you can get the pixel value of it using this code:

context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)

Questions:
Answers:

You can calculate the pixels for a specific DPI value: http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31

Questions:
Answers:

I’ve the same problem. The only solution i’ve found (it will not really help you 🙂 ) is to set it in the Xml file.

If you can get the density from the code, you can use the convertion: “The conversion of dip units to screen pixels is simple: pixels = dips * (density / 160).” (from http://developer.android.com/guide/practices/screens_support.html )

Edit: you can get the screen density: http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi

Leave a Reply

Your email address will not be published. Required fields are marked *