2

我听onGlobalLayoutListener如下代码所示。我只想听一次。一旦onGlobalLayout()被调用,我想停止听它。

我尝试使用removeOnGlobalLayoutListener()方法,但警告调用所需的 API 级别 16(当前最小值为 14)

我也尝试使用removeGlobalOnLayoutListener. 但它已被弃用。

代码 :

searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
                        new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        // Do something
        // Remove listener
    }
});

如何去除onGlobalLayoutListener

编辑 :

在此处输入图像描述

4

1 回答 1

7

OnGlobalLayoutListener您可以使用以下代码删除。仍然会有一个strikethroughon 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);
            }

    }
});
于 2013-08-17T06:11:27.370 回答