Справка о: View.setMargins (слева, сверху, справа, снизу); - PullRequest
2 голосов
/ 18 мая 2011

в моем приложении я использую метод setMargins (....) для некоторых представлений.

В моем макете я зафиксировал ширину, высоту и размер моих просмотров с помощью 'dp', а не пикселей,

и в моем коде, когда я устанавливаю Margins, это дает плохой результат, но когда я меняю dp на px в моем макете, это прекрасно работает.

так что мой вопрос: могу ли я установить поля со значениями dp, ?? пример:

myView.setMargins(left in dp , top in dp , right in dp , bottom in dp ) ; 

заранее спасибо

Ответы [ 2 ]

7 голосов
/ 18 мая 2011

Вы можете сделать это легко, просто нужно определить элементы Dimension (значения strings.xml) и ссылаться на них в своем коде.

Это строка из strings.xml

<dimen name="left_border_distance">32dip</dimen>

но вам не нужно указывать это напрямую, скорее через IDE.

Тогда в вашем коде

int marginLeft = (int) getResources().getDimensionPixelSize(R.dimen.left_border_distance);
myView.setMargins(marginLeft  , top in dp , right in dp , bottom in dp ) ;  
1 голос
/ 18 мая 2011

Или вы можете посмотреть на этот ответ: Поля LinearLayout, программно с dp

...