Android の新しいサポート ライブラリ 24.0.0 サポート ライブラリのBottomSheetDialogFragment
. 2つのことを除いて、すべて正常に動作します。以前は、plain oldDialogFragment
を使用していたときに、以下の 2 つのプロパティを使用して
黒い影を取り除きます。
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent)
;外側の領域をクリックしたときにフラグメントが破棄されないようにします。
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
、WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
;
ボトムシートフラグメントの場合、上記と同等のものになります。以下は私のBottomSheetFragmentコードです。
public class FullBottomSheetDialogFragment extends BottomSheetDialogFragment
{
private BottomSheetBehavior mBehavior;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
View view = View.inflate(getContext(), R.layout.sheet, null);
view.findViewById(R.id.fakeShadow).setVisibility(View.GONE);
dialog.setContentView(view);
mBehavior = BottomSheetBehavior.from((View) view.getParent());
return dialog;
}
@Override
public void onStart() {
super.onStart();
mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}