2016-08-30 6 views
1

Я хочу программно установить в моем размере макета. И этот размер макета получается из папки dimen. но проблема в том, что когда я получаю значение из папки dimen, он отлично отображается на экране с нормальным разрешением, но когда он работает с высоким разрешением экрана, он отлично не работаетКак получить значение из папки dimen в формате dp

+1

GetResources(). getDimensionPixelSize (R.dimen.YOUR_DIMEN) вам не поможет? – Amir

ответ

0

Да я решить мою проблему screen resolution. Когда вы получаете значение из папки dimen, оно получается в формате Pixel. Размер пикселя зависит от вашего device resolution Not device size. Итак, вам нужно создать screen size и screen resolution основанную папку dimen. Как: enter image description here

В этой папке указаны разные размеры экрана и разрешение экрана.

1

Вам необходимо преобразовать значение dp, которое вы получаете из папки dimen в соответствующее количество пикселей для плотности экрана устройства. Пример:

float dp = 5.0f // This is the dp value from your dimen file 
DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); 
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics); 

Где px является масштабированным значением пикселя, который будет правильно отображать на устройстве.

1

Ссылка на эту ссылку Different values folders in android!

Создайте папку «values» для каждой плотности экрана и определите размер вашего макета в каждом файле «размеры.xml». Это даст вам возможность использовать разные размеры для одного и того же макета без использования какой-либо части кода Java.

Надеется, что это помогает :)

0

Вы не можете использовать только один Dimens для всех макета устройств, пожалуйста, попытайтесь создать некоторую папку значения Resouce с различным размером

, и вы можете обратиться к моему проекту, как показано ниже, которые могут помочь U в ген в Dimens в различных floder автоматически https://github.com/Vaycent/genDimensXml Я надеюсь, что это может помочь U