3

Android の新しいサポート ライブラリ 24.0.0 サポート ライブラリのBottomSheetDialogFragment. 2つのことを除いて、すべて正常に動作します。以前は、plain oldDialogFragmentを使用していたときに、以下の 2 つのプロパティを使用して

  1. 黒い影を取り除きます。

    dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

  2. 外側の領域をクリックしたときにフラグメントが破棄されないようにします。

    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);
    }

  

    
}
4

0 に答える 0