#android #android-fragments #android-activity #android-3.0-honeycomb
#Android #android-фрагменты #android-activity #android-3.0-honeycomb
Вопрос:
У меня есть activity с парой фрагментов внутри. Я использую макет фрейма для каждого фрагмента и использую относительный макет в качестве родительского.
У меня были головные боли при получении точного местоположения фрагмента в parent. Но, похоже, я могу использовать только относительные значения.
Итак, есть ли способ получить точное местоположение фрагмента в activity?
Комментарии:
1. Зачем вам нужна эта информация? На Android следует избегать абсолютного позиционирования.
2. Я бы хотел использовать его с Аниматором
Ответ №1:
Я сделал это не с фрагментами, а с содержимым фрагментов. Если вы используете 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;
}