Mam duże trudności przy korzystaniu z ViewTreeObserver. Wszystko działa dobrze przez jakiś nieprzewidywalny okres czasu, a potem słuchacz nie działa już. Jest to z pewnością to, co jest napisane w dokumencie: Zwracany ViewTreeObserver obserwator nie gwarantuje, że pozostaną ważne przez cały okres użytkowania tego poglądu Dlatego przerobić Setup za każdym razem mogę zmienić swój pogląd:ViewTreeObserver Listener nie jest wywoływany po pewnym czasie.
protected void shrinkToFit(final TextView t) {
if(vto==null||!vto.isAlive()){
vto = t.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
doAdjust(t);
}
});
}
}
a oto jak przywołuję go:
TextView t = (TextView) findViewById(R.id.maindesc);
t.setTextSize(Constants.MAINDESC_SIZE);
String todisp_1 = tarifreadtemp.area_desc + ":"
+ tarifreadtemp.area_tarifuserdesc;
shrinkToFit(t);
t.setText(todisp_1);
t.invalidate();
Takie podejście oznaczałoby dodanie detektora do widoku za każdym razem, gdy zmienię ten widok. Czy możesz to zrobić, ale dlaczego Android zachowuje się w ten sposób? Tak się nie dzieje z żadnymi innymi obserwatorami/słuchaczami, których znam. – michaelsmith
To jest dobre pytanie .. niestety nie mam odpowiedzi na to – Cata
Po prostu zdaję sobie sprawę, że system jest przetwarzanie poprawnie, choć z opóźnieniem kilka minut ... Prawdopodobnie tylko przypadku w trybie debugowania. Sprawdzę to – michaelsmith