使用ViewTreeObserver時遇到很大困難。所有的作品在一段不可預測的時間內都可以正常工作,然後聽衆就不再操作了。這是肯定是因爲什麼被寫在doc:返回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);
}
});
}
}
這裏是我如何調用它:
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();
這種方法意味着每次更改視圖時都會將偵聽器添加到視圖中。可以這樣做,但爲什麼Android的行爲呢?這對於我所知道的任何其他觀察者/聽衆都不會發生。 – michaelsmith 2012-02-24 10:10:15
這是一個很好的問題..不幸的是,我沒有回答這個問題 – Cata 2012-02-24 11:41:24
我只是意識到系統正在正確處理,儘管延遲了幾分鐘......可能只是在調試模式下的情況。將檢查這一點 – michaelsmith 2012-02-25 10:41:14