@Behtold_A

Как в Android получить координаты View элемента после его создания?

Создаю элементы экрана программным путем. Возникла необходимость определять координаты вновь созданного элемента. Однако запросы getTop(), getBottom() и т.д. всегда возвращают ноль. Подскажите, куда копать?

public class Main extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ------------------------------- Создаем корневой лайаут
        RelativeLayout rootLayout = new RelativeLayout(this);
        ViewGroup.LayoutParams rootParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        setContentView(rootLayout, rootParams); 
        //---------------------------------- лайаут под элементы
        LinearLayout menu = new LinearLayout(this);
        RelativeLayout.LayoutParams menuParam = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                                 ViewGroup.LayoutParams.WRAP_CONTENT);
        menuParam.addRule(RelativeLayout.CENTER_IN_PARENT); // В центр
        rootLayout.addView(menu,menuParam);
        // ----------------------------- Элементы
        LinearLayout.LayoutParams itemParam = new LinearLayout.LayoutParams // Создаем настройку для элементов
                (ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);

        String[] items = {"Item1", "Item2", "Item3"};
        TextView[] text = new TextView[items.length]; // Создаем массив элементов

        for (int i=0; i<items.length; i++) {
            text[i] = new TextView(this);
            text[i].setText(items[i]+" ");
            menu.addView(text[i], itemParam);

            int x0 = text[i].getLeft(),
                    y0 =text[i].getTop(),
                    x1 = text[i].getRight(),
                    y1 = text[i].getBottom();

            System.out.println("Создали элемент с координатами: [" + x0 + "," + y0 + "]-[" + x1 + "," + y1 + "]");
        }

    }
}


Данный код нормально отображает элементы, однако в консоли выдает:
I/System.out: Создали элемент с координатами: [0,0]-[0,0]
I/System.out: Создали элемент с координатами: [0,0]-[0,0]
I/System.out: Создали элемент с координатами: [0,0]-[0,0]
  • Вопрос задан
  • 3265 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
View.getViewTreeObserver().addOnGlobalLayoutListener(...);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы