Создаю элементы экрана программным путем. Возникла необходимость определять координаты вновь созданного элемента. Однако запросы 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]