2011-10-17 7 views
6

SposóbDaj wyściółkę z setPadding z jednostki DIP nie px jednostki

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

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

to daje wyściółkę o 1 piksel w każdej strony. Jak mogę podać 1dip zamiast 1px?

wartości od lewej, prawej górnej i dolnej są w pikselach, w jaki sposób mogę programowo podać wartości w kodzie w zanurzeniu?

Dzięki

Odpowiedz

19

użyć poniższy kod, aby dostać pikseli z danej wartości w dp.

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

gdzie wartośćInDP jest wartością w dp, a to spowoduje wyświetlenie odpowiedniej wartości piksela zgodnie z gęstością ekranu.

lub można użyć następujących -

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

jesteś pewien, że to działa dobrze? :) – Lukap

+1

Jaka byłaby sytuacja odwrotna? od dipu do px, czy jest jakieś miejsce, gdzie mogę znaleźć więcej szczegółów – Lukap

+0

Tak. sprawdź te linki http://stackoverflow.com/questions/2406449/does-setwidthint-pixels-use-dip-or-px i http://stackoverflow.com/questions/2238883/what-is-the-correct-way -do-określenia-wymiarów-in-dip-from-kod-java. – anujprashar

0
getListView().setPadding(50,50,50,50);