使用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