ViewTreeObserver를 사용할 때 큰 어려움이 있습니다. 모든 예측할 수없는 기간 동안 잘 작동하고 수신기가 더 이상 작동하지 않습니다. 그것은 확실히 때문에 문서에 기록 된 것입니다 :ViewTreeObserver 잠시 후 수신기가 호출되지 않습니다.
protected void shrinkToFit(final TextView t) {
if(vto==null||!vto.isAlive()){
vto = t.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
doAdjust(t);
}
});
}
}
: 반환 ViewTreeObserver 관찰자이보기의 수명 동안 유효 보장 할 수 없습니다 그러므로 나는 내보기를 변경 설정 때마다 다시 실행 (아마도 레이아웃을 변경하기 전에 내가 먼저 뷰를 초기화하기 때 또는이 일어날 수)과에
보통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();
이 방법은 해당보기를 변경할 때마다 수신기에보기를 추가하는 것을 의미합니다. 그렇게 할 수는 있지만 왜 안드로이드는 그런 행동을합니까? 이 사실은 내가 아는 다른 관찰자/청중에게도 발생하지 않습니다. – michaelsmith
이것은 좋은 질문입니다. 불행히도 나는 그것에 대한 대답이 없습니다. – Cata
저는 시스템이 올바르게 처리되고 있음을 알고 있습니다. 몇 분의 지연이 있더라도 ... 아마도 디버그 모드의 경우 일뿐입니다. 이것을 점검 할 것이다. – michaelsmith