Это заставляло меня сходить с ума в течение последних нескольких часов.
У меня есть FrameLayout, на котором есть одна кнопка. Когда вы нажимаете кнопку, я хочу нарисовать новое слово и получить его измерения, чтобы рисовать вокруг него прямоугольник.Измерения TextView, сверху, слева не обновляются
Это код, который запускается при нажатии на кнопку «Далее»:
private OnClickListener m_onClickNext = new OnClickListener()
{
public void onClick(View v)
{
TextView tv = new TextView(context);
tv.setTextColor(0xFF000000);
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 100);
tv.setText("TEXTSTRING");
m_frameLayout.addView(tv, new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));
//tv.measure(0, 0);
int left = tv.getLeft();
int top = tv.getTop();
int right = left + tv.getMeasuredWidth();
int bottom = top + tv.getMeasuredHeight();
}
};
слева и сверху равны 0 (ноль).
Добавление tv.measure(0, 0)
atleast обновляет ширину и высоту.
Я пробовал звонить invalidate
и requestLayout
по телефону tv
и m_frameLayout
, без каких-либо успехов.
Я понимаю, что макет не закончил рисование .. но ПОЧЕМУ ????
Спасибо, я реализовал 'OnLayoutChangeListener' – Itsik