在自定义视图的构造函数中获取 CoordinatorLayout 行为
Get CoordinatorLayout Behavior in Constructor of Custom View
我创建了一个自定义视图来处理我的底部 sheet 实现。我尝试使用 BottomSheetBehavior.from( this )
检索 bottomsheet 行为,但由于我需要构造函数中的行为,因此 this
尚未初始化。
目前,我已经使用 1ms 的 postDelayed runnable 来解决问题并执行我需要的操作,但这显然是一个 hack。
我一直找不到任何其他方法来获得该行为。
[编辑]
深入了解后,this
未初始化似乎不是问题所在。问题是当直接从构造函数调用 BottomSheetBehavior.from
时 LayoutParams
不是 CoordinatorLayout.LayoutParams
的实例,但当从构造函数中创建的可运行对象调用时它们是 CoordinatorLayout.LayoutParams
的实例。
在仔细查看了 View 文档之后,我将调用从视图的构造函数移至其 onAttachedToWindow 方法。
我发现这比使用 runnable 更干净。
我创建了一个自定义视图来处理我的底部 sheet 实现。我尝试使用 BottomSheetBehavior.from( this )
检索 bottomsheet 行为,但由于我需要构造函数中的行为,因此 this
尚未初始化。
目前,我已经使用 1ms 的 postDelayed runnable 来解决问题并执行我需要的操作,但这显然是一个 hack。
我一直找不到任何其他方法来获得该行为。
[编辑]
深入了解后,this
未初始化似乎不是问题所在。问题是当直接从构造函数调用 BottomSheetBehavior.from
时 LayoutParams
不是 CoordinatorLayout.LayoutParams
的实例,但当从构造函数中创建的可运行对象调用时它们是 CoordinatorLayout.LayoutParams
的实例。
在仔细查看了 View 文档之后,我将调用从视图的构造函数移至其 onAttachedToWindow 方法。
我发现这比使用 runnable 更干净。