Вид.setPadding принимает только в px, есть ли в любом случае setPadding в dp?


Android View.setPadding(int left, int top, int right, int bottom) принимает только значения в px, но я хочу установить заполнение в dp. Есть ли способ обойти это?

4 84

4 ответа:

прямо в коде

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

Если вы определяете размер (в dp или любом другом) в XML-файле (что лучше в любом случае, по крайней мере в большинстве случаев), вы можете получить значение пикселя с помощью этого кода:

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

вы можете рассчитать пиксели для определенного значения DPI:http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31

У меня та же проблема. Единственное решение, которое я нашел (это действительно не поможет вам:)) - это установить его в Xml-файл.

Если вы можете получить плотность из кода, Вы можете использовать преобразование: "преобразование единиц dip в пиксели экрана просто: пиксели = провалы * (плотность / 160)."(от http://developer.android.com/guide/practices/screens_support.html)

Edit: вы можете получить плотность экрана: http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi