Я хочу программно установить в моем размере макета. И этот размер макета получается из папки dimen. но проблема в том, что когда я получаю значение из папки dimen, он отлично отображается на экране с нормальным разрешением, но когда он работает с высоким разрешением экрана, он отлично не работаетКак получить значение из папки dimen в формате dp
ответ
Да я решить мою проблему screen resolution
. Когда вы получаете значение из папки dimen, оно получается в формате Pixel. Размер пикселя зависит от вашего device resolution
Not device size
. Итак, вам нужно создать screen size
и screen resolution
основанную папку dimen. Как:
В этой папке указаны разные размеры экрана и разрешение экрана.
Вам необходимо преобразовать значение 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
является масштабированным значением пикселя, который будет правильно отображать на устройстве.
Ссылка на эту ссылку Different values folders in android!
Создайте папку «values» для каждой плотности экрана и определите размер вашего макета в каждом файле «размеры.xml». Это даст вам возможность использовать разные размеры для одного и того же макета без использования какой-либо части кода Java.
Надеется, что это помогает :)
Вы не можете использовать только один Dimens для всех макета устройств, пожалуйста, попытайтесь создать некоторую папку значения Resouce с различным размером
, и вы можете обратиться к моему проекту, как показано ниже, которые могут помочь U в ген в Dimens в различных floder автоматически https://github.com/Vaycent/genDimensXml Я надеюсь, что это может помочь U
GetResources(). getDimensionPixelSize (R.dimen.YOUR_DIMEN) вам не поможет? – Amir