使用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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何调用它:
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();
Run Code Online (Sandbox Code Playgroud)
通常,我addOnGlobalLayoutListener在布局重绘或更改之前将侦听器添加到视图中(这可能在我第一次初始化视图时或更改其布局之前发生),并且在侦听器中我要做的第一件事就是从视图中删除侦听器。
| 归档时间: |
|
| 查看次数: |
3693 次 |
| 最近记录: |