2013-07-01 3 views
4

Я пытаюсь использовать метод setLayoutParams, чтобы указать графические параметры моего макета таблицы, но я не уверен, принимает ли метод setLayoutParams значения пикселей или значения dip, особенно в java сохраненные значения кажется, пиксельные те, для примера, если я объявляю эти две переменные:setLayoutParams dip значения

private int blockDimension = 50; 
private int blockPadding = 2; 

, а затем вызвать метод:

tableRow.setLayoutParams(new LayoutParams((blockDimension + 2 * blockPadding) * numberOfColumnsInMineField,blockDimension + 2 * blockPadding)); 

ли они рассматриваться как пиксели или они преобразовали один раз передается методу ? Тогда, если это не так, как я могу установить значения dip в java?

+0

метод setLayoutParams принимает пиксельные значения –

+0

Спасибо Владимир Yatsykiv, но если я хочу, чтобы определить значения в купанием в Java, у меня в любом случае, чтобы преобразовать их передать их в setLayoutParams метод? – akari

+0

Да, если у вас есть значения в dp, вы должны преобразовать его в px (см. Ответ ниже) и после этого поместить его в метод setLayoutParams. –

ответ

7

Он принимает пиксели. Для преобразования дп в пикселы вы можете использовать это:

public int getPx(int dimensionDp) { 
    float density = getResources().getDisplayMetrics().density; 
    return (int) (dimensionDp * density + 0.5f); 
} 
+0

Okey, спасибо Ken Wolf за вашу функцию! – akari

0

, если вы хотите, чтобы значения в купании нужно умножить его плотность экрана Вы можете получить его таким образом:

float density = getResources().getDisplayMetrics().density 
+0

Хорошо спасибо, вы имеете в виду, что я должен делать что-то вроде int blockDimensionDipValue = blockDimension * density? – akari

+0

Да, но cast blockDimension для float и результата для int – Blackbelt

Смежные вопросы