Получить itemPosition в макете (параметры x и y) - PullRequest
0 голосов
/ 13 марта 2012

У меня есть RelativeLayout, в котором у меня есть одна кнопка ImageButton. Мне нужны параметры позиции этого предмета, и я не знаю, как их получить.

У меня есть попытка:

ImageButton user = (ImageButton) findViewById(R.id.User);
int x =user.getTop();
int y =user.getLeft();

Но результат всегда 0;

Спасибо.

Ответы [ 3 ]

4 голосов
/ 13 марта 2012

Я думаю, что вы вызываете этот метод при рисовании макета, вместо этого вы должны использовать:

ViewTreeObserver observer = user.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        //in here, place the code that requires you to know the dimensions.
        //Place your code here
    }
}
0 голосов
/ 13 марта 2012

Поскольку ваша ImageButton не рассчитала свою готовую позицию в это время.

см. Как получить размер виджета Android после расчета макета?

Не пытайтесь получить позицию в onCreate (), который всегда возвращает 0.

0 голосов
/ 13 марта 2012

getTop () и getLeft () возвращают вам местоположение представления относительно его родителя.Например, когда getLeft () возвращает 20, это означает, что представление расположено в 20 пикселях справа от левого края его прямого родителя.См. здесь под позицией точки.Попробуйте что-то вроде:

user.getParent().getLeft();

надеюсь, что это поможет!

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