2016-12-30 4 views
1

ボトムシートの実装を処理するカスタムビューを作成しました。 BottomSheetBehavior.from(this)を使用してボトムシートの動作を取得しようとしましたが、コンストラクタの動作が必要なので、thisはまだ初期化されていません。カスタムビューのコンストラクタでCoordinatorLayoutビヘイビアを取得

今のところ、私は、動作を取得し、私が必要とすることを行うために1ミリ秒でpostDelayed実行可能ファイルを使用して回避策を管理しましたが、それは明らかにハックです。

私は動作を得る他の方法を見つけることができませんでした。

[EDIT]

見た後少し深く、初期化されていない thisは問題ではないようです。問題は、 BottomSheetBehavior.fromがコンストラクタから直接呼び出されたとき CoordinatorLayout.LayoutParamsのインスタンスではなく、コンストラクタで作成された実行可能ファイルから呼び出されたときに CoordinatorLayout.LayoutParamsになることです。

+0

あなたは 'view.post(Runnable)'メソッドを使ってみましたか?これは、ビューの保留中のタスクが完了すると実行されます。 –

答えて

0

Viewのドキュメントをもう少し見て、ビューのコンストラクタからonAttachedToWindowメソッドに呼び出しを移動しました。

これは、実行可能ファイルを使用するよりはるかにクリーンであることがわかります。

関連する問題