私のBottomSheetDialogFragment
を開くと、半分(完全にではない)が開きます。
fragment.show(supportFragmentManager, "my_frag")
NestedScrollView
をbehavior_peekHeight
で試しましたが、うまくいきませんでした。NestedScrollView
なしで試しました。 LinearLayout
のみ。match_parent
とwrap_content
の間で高さを切り替えてみましたRecyclerView
レイアウトに単純なBottomSheetDialogFragment
があります。
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<LinearLayout
...
>
<Android.support.v7.widget.RecyclerView
...
/>
BottomSheetFragment
は、BottomSheetDialogFragment
を意味します。使用済みのシートを開くには、onCreateDialog()
に変更を加える必要があります。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog bottomSheetDialog=(BottomSheetDialog)super.onCreateDialog(savedInstanceState);
bottomSheetDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
BottomSheetDialog dialog = (BottomSheetDialog) dialog;
FrameLayout bottomSheet = dialog .findViewById(Android.support.design.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
BottomSheetBehavior.from(bottomSheet).setSkipCollapsed(true);
BottomSheetBehavior.from(bottomSheet).setHideable(true);
}
});
return bottomSheetDialog;
}
レイアウトはそのままにしてくださいmatch_parent
NestedScrollView
を使用する必要はありません。それは私のために働いた。それでも問題が解決しない場合はお知らせください。
新しいマテリアルライブラリを使用している場合。それはimplementation 'com.google.Android.material:material:1.0.0'
。次に、Parent FrameLayout
のIDを変更する必要があります。ですから。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog bottomSheetDialog=(BottomSheetDialog)super.onCreateDialog(savedInstanceState);
bottomSheetDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dia) {
BottomSheetDialog dialog = (BottomSheetDialog) dia;
FrameLayout bottomSheet = dialog .findViewById(com.google.Android.material.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
BottomSheetBehavior.from(bottomSheet).setSkipCollapsed(true);
BottomSheetBehavior.from(bottomSheet).setHideable(true);
}
});
return bottomSheetDialog;
}
この場合、import com.google.Android.material
からのすべてのインポートを確認してください。
親ビューにアクセスしているため、以下のコードを使用してビューを全画面に展開します。
View parent = (View) inflatedView.getParent();
parent.setFitsSystemWindows(true);
BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(parent);
inflatedView.measure(0, 0);
DisplayMetrics displaymetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenHeight = displaymetrics.heightPixels;
bottomSheetBehavior.setPeekHeight(screenHeight);
if (params.getBehavior() instanceof BottomSheetBehavior) {
((BottomSheetBehavior)params.getBehavior()).setBottomSheetCallback(mBottomSheetBehaviorCallback);
}
params.height = screenHeight;
parent.setLayoutParams(params);
お役に立てば幸いです。