gpt4 book ai didi

android - 如何从里面引用一个 lambda?

转载 作者:IT老高 更新时间:2023-10-28 13:31:39 28 4
gpt4 key购买 nike

我试图在 onCreate 方法中获取 View 的高度,但我找不到任何方法来删除 OnGlobalLayoutListener。

在 Java 中(工作):

containerLayout.getViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
@Override
public void onGlobalLayout() {
containerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();

}
});

在 Kotlin 中(不接受“this”):

   containerLayout.viewTreeObserver.addOnGlobalLayoutListener {
containerLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
Toast.makeText(applicationContext, "size is "+ containerLayout.height,Toast.LENGTH_LONG).show()
}

这个问题有引用或例子吗?谢谢。

最佳答案

不支持从内部引用 lambda。

作为一种解决方法,您可以使用匿名对象而不是 lambda SAM 转换为 Java 功能接口(interface) OnGlobalLayoutListener:

containerLayout.viewTreeObserver.addOnGlobalLayoutListener(object: OnGlobalLayoutListener {
override fun onGlobalLayout() {
// your code here. `this` should work
}
})

关于android - 如何从里面引用一个 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com