Дать прокладку с помощью setPadding с модулем dip unit not px

Метод

public void setPadding (int left, int top, int right, int bottom) someview.setPadding(1,1,1,1); 

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

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

благодаря

Solutions Collecting From Web of "Дать прокладку с помощью setPadding с модулем dip unit not px"

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

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

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

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

 float value = valueInDP * getResources().getDisplayMetrics().density; 

В чем разница между «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 ); 
 getListView().setPadding(50,50,50,50);