Android не отображается после метода addView

У меня проблема с методом ViewGroup.addView (). Я использую этот код для добавления нового представления в мой макет:

TalbeLayout parent = (TableLayout)findViewById(R.id.this_does_not_matter); parent.removeAllViews(); //this view group contains something at start TextView tv = new TextView(this); tv.setText("some text"); TableLayout.LayoutParams lp = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); tv.setLayoutParams(lp); parent.addView(tv); 

И после этого я не могу видеть мой TextView. Более того, parent.getChildCount () возвращает правильные значения (1, если я пытаюсь добавить одного ребенка). В методе onClick () родительского представления я пытаюсь получить ширину и высоту TextView, и все это равно 0. Вызов функции запросаLayout (), invalidate () и измерения (500, 50) для TableView, а родительский эффект не влияет. Я даже пытаюсь добавить новый вид с помощью view.post (Runnable), хотя этот код выполняется в потоке пользовательского интерфейса.

Я был в замешательстве. Я действительно не понимаю, что происходит. Может кто-нибудь объяснить мне, что я делаю неправильно?

Один интересный момент: setLayoutParams () не имеет никакого эффекта. Если я устанавливаю параметры с шириной = 500 и height = 50, в методе onClick я получаю params с width = -1 и height = -1.

Код после TableRow добавил:

 TableLayout parent = (TalleLayout)findViewById(R.id.this_does_not_matter); parent.removeAllViews(); //this view group contains something at start TextView tv = new TextView(this); tv.setText("some text"); TableLayout.LayoutParams lp = new TableLayout.LayoutParams(500, 50); TableRow.LayoutParams tlp = new TableRow.LayoutParams(500, 50); TableRow tr = new TableRow(this); tr.addView(tv, tlp); parent.addView(tr, lp); parent.invalidate(); parent.requestLayout(); 

Я нашел еще одну интересную вещь. Эта операция выполняется из TabHost. И «addView bug» появляется только в том случае, если в этой TabHost сначала выбран Activity. Если в первый раз я запускаю Activity с другой вкладки, все работает нормально.

Я нашел решение. Если отключить анимацию макета с помощью android: animateLayoutChanges = "false" все работает нормально. Но я до сих пор не знаю, почему это происходит. Если кто-нибудь знает причину такого поведения, это интересно для меня.