BottomSheetDialogFragment似乎是用一个锚进行编码的,如果您的片段布局在高度上超过了360dp,onShow()将导致对话框查看到360dp,并且您必须手动拖动工作表以显示所有布局。
有什么方法可以绕过这种行为,或者可以使用片段的模态底部对话框的任何其他建议?
您可以按以下方式检查该行为
Activity.java
MyDialog myDialog = new MyDialog();
mtDialog.show(getChildFragmentManager(),"my_dialog_fragment");MyDialog.java
public class MyDialog extends BottomSheetDialogFragment{
public View onCreate(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState){
return inflater.inflate(R.layout.dialog, container, false);
}
}dialog.xml
<FrameLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="432dp"
android:backgroud="@color/blue"/>差不多就是密码了。我尝试过使用setStyle,并创建了BottomSheetDialog样式和所有这些排列和不。但是,将高度设置为360 to是它完全扩展的地方,但我需要更多的区域。
发布于 2018-10-02 01:15:20
在这里回答Q。
public class MyDialogFragment extends BottomSheetDialogFragment {
@Override
public void setupDialog(Dialog dialog, int style) {
View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog, null);
dialog.setContentView(v);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) v.getParent()).getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);
}以上解决了不扩展到完全高度的问题,在布局中声明。可能需要添加对行为的检查,以确保其不为空。现在只需要添加我的算法,不确定它是在oncreateview还是在安装对话框中.我们拭目以待。
快乐编码:)
https://stackoverflow.com/questions/52600519
复制相似问题