Получение абсолютного местоположения фрагмента в деятельности - PullRequest
0 голосов
/ 01 июня 2011

У меня есть активность с парой фрагментов внутри. Я использую Макет кадра для каждого фрагмента и имею Относительное расположение в качестве родителя.

У меня были головные боли при получении точного местоположения фрагмента в parent. Но похоже, что я могу только относительные значения.

Итак, есть ли в любом случае точное местоположение фрагмента в деятельности?

1 Ответ

1 голос
/ 14 марта 2012

Я сделал это не с фрагментами, а с содержимым фрагментов. Если вы используете findById() в действии, которое найдет идентификатор чего-либо завышенного в этом действии (включая содержимое фрагмента и т. Д.).

Затем вы можете использовать что-то вроде View.getLocationOnScreen (int []) , это должно дать вам x и y вида на экране. Никогда не пробовал это на фрагменте, но если ваш фрагмент обернут макетом, то проблем не должно быть.

Надеюсь, это поможет?

На самом деле это может помочь, возможно, потребуется изменить, чтобы получить два представления, так как этот метод находится внутри пользовательского RelativeLayout, который я сделал:

/**
 * Will return the X,Y of the Anchor view relative to this relative layout.. So It doesn't
 * matter if the anchor view is nested, or any any other layout, this WILL find its location
 * relative too this {@link HelpRelativeLayout}.
 * 
 * @author chris.jenkins
 * @param anchor
 * @return
 */
private int[] calculateAnchorViewPosition(View anchor)
{
    int[] loc = new int[2];
    int[] conLoc = new int[2];
    // getLocationInWindow(conLoc);
    getLocationOnScreen(conLoc);
    // anchor.getLocationInWindow(loc);
    anchor.getLocationOnScreen(loc);

    // get correct top left pos + half the h/w of the anchor
    loc[0] = (loc[0] - conLoc[0]);
    loc[1] = (loc[1] - conLoc[1]);

    MyLog.d(loc[0] + " " + loc[1]);

    return loc;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...