我听onGlobalLayoutListener
如下代码所示。我只想听一次。
一旦调用了onGlobalLayout()
,我想停止听它。
我尝试使用removeOnGlobalLayoutListener()
方法,但这给出了调用所需API级别16(当前最小值为14)的警告。
我也试过使用removeGlobalOnLayoutListener
。但这是不赞成的。
代码:
searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Do something
// Remove listener
}
});
如何删除
onGlobalLayoutListener
?编辑:
最佳答案
您可以使用以下代码删除OnGlobalLayoutListener
。strikethrough
上仍会有一个removeGlobalOnLayoutListener()
,已被弃用。但是,lint警告将通过使用注释来处理。
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
searchWebView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
searchWebView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});