我听onGlobalLayoutListener
,如下面的代码所示。我只想听一次。
调用onGlobalLayout()
后,我想停止收听它。
我尝试使用removeOnGlobalLayoutListener()
方法但是会发出警告调用所需的API级别16(当前最小值为14)。
我也尝试过使用removeGlobalOnLayoutListener
。但它已被弃用。
代码:
searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Do something
// Remove listener
}
});
如何删除onGlobalLayoutListener
?
修改:
答案 0 :(得分:7)
您可以使用以下代码删除OnGlobalLayoutListener
。 strikethrough
上仍有removeGlobalOnLayoutListener()
,已弃用。但是,通过使用注释来处理棉绒警告。
@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);
}
}
});