Возможно ли установить Поля LinearLayout, программно, но не с пикселями, но dp?Поля LinearLayout, программно с dp
ответ
Вы можете использовать DisplayMetrics и определить плотность экрана. Что-то вроде этого:
int dpValue = 5; // margin in dips
float d = context.getResources().getDisplayMetrics().density;
int margin = (int)(dpValue * d); // margin in pixels
Как я помню, что лучше использовать настил для смещения и округления для ширины.
Я была такая же проблема, и использовал эту технику, чтобы решить:
Во-первых, я добавил файл XML в мой Рез/значений папки dimensions.xml. Это выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<dimen name="my_margin">5dip</dimen>
</resources>
Во-вторых, в моем коде, я получил пиксельный эквивалент этой марже следующим образом (обратите внимание, я использую Xamarin так это C# код, но чисто Java версия должна быть очень похожи):
int myMarginPx = Resources.GetDimensionPixelSize(Resource.Dimension.my_margin);
Наконец, я создаю мой макет Params:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
layoutParams.SetMargins(myMarginPx, myMarginPx, myMarginPx, myMarginPx);
Чувак, Большое спасибо, Этот код мне помогает. –
в форме android java, он должен выглядеть так: 'int getDimenInt (контекст контекста, @DimenRes int dimenRes) { return context.getResources(). GetDimensionPixelSize (dimenRes); } ' –
Вы можете конвертировать дп в рх, например, преобразовать 5 диоптрий рХ:
Resources r = mContext.getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, r.getDisplayMetrics());
Следующий метод работает для меня для преобразования пикселей дп:
int pixelToDP(int pixel) {
final float scale = RaditazApplication.getInstance().getResources().getDisplayMetrics().density;
return (int) ((pixel * scale) + 0.5f);
}
преобразовать DP в значение Pixel
int Whatever_valueInDP=10;//value in dp
int Value_In_Pixel= (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, Whatever_valueInDP, getResources()
.getDisplayMetrics());
- 1. Установить поля в LinearLayout программно
- 2. android dp size для LinearLayout
- 3. Установить границу с LinearLayout программно
- 4. Как настроить EditText TopMargins в dp программно?
- 5. create linearlayout программно андроид
- 6. Программно LinearLayout Вес
- 7. Сформировать LinearLayout программно
- 8. Android: Prepend LinearLayout программно
- 9. Как добавить размер поля между кнопками, программно добавленными в LinearLayout?
- 10. Android DP?
- 11. Как сортировать файлы LinearLayout программно
- 12. Добавить изображения в linearlayout программно
- 13. Как указать layout_below программно для LinearLayout?
- 14. Программно добавить представление в LinearLayout
- 15. Добавить Views в LinearLayout программно
- 16. Добавление фрагментов в LinearLayout программно
- 17. Программно добавить LinearLayout с текстом и изображением
- 18. Добавление видов в LinearLayout с весом программно
- 19. Выравнивать взгляды на LinearLayout программно
- 20. LinearLayout setMargins программно не влияет
- 21. Android: Установите гравитацию LinearLayout программно
- 22. Программно-setText color для linearLayout
- 23. Программно добавление ImageViews в LinearLayout
- 24. Как программно установить ширину LinearLayout?
- 25. Выравнивание ImageView до LinearLayout программно
- 26. Как добавить LinearLayout под другой LinearLayout в FrameLayout программно?
- 27. Android - создать LinearLayout программно и инициализировать id из xml LinearLayout
- 28. установить ширину кнопки в LinearLayout программно
- 29. Программно добавлять кратные ImageView в LinearLayout
- 30. Программно устанавливающий фон LinearLayout растягивает изображение
только в качестве комментария: Вы можете также использовать TypedValue.applyDimensions(), но кажется, что это лучше, см. http://stackoverflow.com/questions/2406449/does-setwidthint-pixels-use-dip-or-px/2406790#2406790 (Romain Guy - инженер Android) – bigstones
+1 - I иметь пару виджета, которые я создал в коде (не используя XML), и вы можете устанавливать только пиксели. Как только я определил версию SDK, мои макеты сошли с ума. Я использовал это, чтобы исправить их ... Всегда используйте XML для макетов Android !!! – tpow
Большой фрагмент. В самом деле. –