Próbuję określić wysokość TextView
przed to jest rysowane. Używam następujący kod, aby to zrobić:getMeasuredHeight() z TextView z owiniętym tekstem
TextView textView = (TextView) findViewById(R.id.textview);
textView.setText("TEST");
int widthSpec = MeasureSpec.makeMeasureSpec(LayoutParams.MATCH_PARENT, MeasureSpec.EXACTLY);
int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(widthSpec, heightSpec);
System.out.println("MeasuredHeight: " + textView.getMeasuredHeight());
Wyjście jest MeasuredHeight: 28
. Nic w tym złego.
Jednak, gdy daję TextView
długi tekst, więc owijania występuje, to nadal daje wysokość jednej linii zamiast dwóch:
(...)
textView.setText("TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST");
(...)
Wyjście jest MeasuredHeight: 28
, gdzie spodziewałbym MeasuredHeight: 56
.
Dlaczego nie daje mi właściwej wartości i jak mogę osiągnąć odpowiednią wartość?
Może [to] [1] pomoże, to prawie ten sam problem! [1]: http://stackoverflow.com/questions/6157652/android-getmeasuredheight-returns-wrong-values – ObAt
Próbowałem proponowanych rozwiązań w tym wątku, w tym jednym (http: // stackoverflow .com/questions/4668939/viewgrouptextview-getmeasuredheight-gives-wrong-value-is-smaller-than-real), ale mają ten sam rezultat. – nhaarman
Gdzie dokładnie użyłeś tego kodu? – Luksprog