我正在尝试在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(不接受“此”):
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
}
})