Отдайте отступ с помощью setPadding с падением, а не с пикселем - PullRequest
6 голосов
/ 17 октября 2011

Метод

public void setPadding (int left, int top, int right, int bottom)

someview.setPadding(1,1,1,1);

это даст заполнение с 1px в каждую сторону.Как я могу дать 1dip вместо 1px?

значения для левого, верхнего правого и нижнего в пикселях, как я могу дать значения программно в коде в dip?

Спасибо

Ответы [ 3 ]

20 голосов
/ 17 октября 2011

Используйте следующий код для получения пикселей с заданным значением в dp.

Resources res = getResources();
float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDP, res.getDisplayMetrics());

где valueInDP - это значение в dp, и оно будет возвращать соответствующее значение в пикселях в соответствии с плотностью экрана.

или вы можете использовать следующее -

float value = valueInDP * getResources().getDisplayMetrics().density;
2 голосов
/ 07 июля 2016

В чем разница между «px», «dp», «dip» и «sp» на Android?

float scale = context.getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (your_dp_goes_here * scale + 0.5f);

view.setPadding(dpAsPixels , dpAsPixels , dpAsPixels , dpAsPixels );
view.setPaddingRelative(dpAsPixels , dpAsPixels , dpAsPixels , dpAsPixels );
0 голосов
/ 03 декабря 2016
getListView().setPadding(50,50,50,50);
...