Итак, я создал настраиваемое всплывающее меню или всплывающее меню, которое я хочу отобразить в определенном месте, но обнаружил, что всплывающее меню отображается в другом месте в зависимости от разрешения экрана, есть ли какой-то расчет, который мне нужно принять во внимание, чтобы убедиться что всплывающее меню/подсказка появляется в одном и том же месте независимо от разрешения экрана планшета?Как сделать кукольное меню в том же месте, независимо от разрешения экрана?
ответ
Если вы вычисляете смещение в пикселях - вам, очевидно, необходимо учитывать плотность экрана. Сначала я бы посмотрел на DisplayMetrics
(в частности, scaledDensity
).
Вот как я получаю DisplayMetrics
:
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
yourOffsetPX *= metrics.scaledDensity;
У меня есть что-то вроде этого: int [] location = new int [2]; view.getLocationOnScreen (местоположение); Rect anchorRect = new Rect (местоположение [0], местоположение [1], местоположение [0] + view.getWidth(), location [1] + view.getHeight()); yPos = anchorRect.top; –
, если вы привязываете всплывающее окно к другому виду (так я понимаю ваш фрагмент), тогда я бы предположил, что ваше мнение находится в неправильном положении. В этом случае это зависит от того, как вы добавляете привязку к макету (через XML или код) –
Я использую функцию showAtLocation для отображения элемента в определенном месте на экране. –