BottomSheetDialog 的两个坑
来源:互联网 发布:淘宝买日系钢笔的店铺 编辑:程序博客网 时间:2024/05/18 03:48
本人在使用 BottomSheetDialog 的时候发现了两个问题,幸运的是都已经有人解决了,下面会给出链接
- 第一个坑:通过滑动关闭 BottomSheetDialog 后再 show() ,Dialog 中的内容却没有显示出来
http://blog.csdn.net/yanzhenjie1003/article/details/51938400 - 第二个坑:BottomSheetDialog 显示的时候状态栏变成黑色
http://www.jianshu.com/p/8d43c222b551
下面为了方便解决问题会把代码贴出来,如果想要了解原理或者更多内容请移步至上述的文章
第一个坑:
private void setBehaviorCallback() { View view = mBottomSheetDialog.getDelegate().findViewById( android.support.design.R.id.design_bottom_sheet); final BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(view); bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { if (newState == BottomSheetBehavior.STATE_HIDDEN) { mBottomSheetDialog.dismiss(); bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { } });}
在 BottomSheetDialog 创建完成后调用该方法即可
第二个坑:
修改 BottomSheetDialog 的高度为 屏幕高度 - 状态栏高度
public class MyBottomSheetDialog extends BottomSheetDialog { private Context mContext; public MyBottomSheetDialog(@NonNull Context context) { super(context); mContext = context; } public MyBottomSheetDialog(@NonNull Context context, @StyleRes int theme) { super(context, theme); mContext = context; } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int screenHeight = getScreenHeight((Activity) mContext); int statusBarHeight = getStatusBarHeight((Activity) mContext); int dialogHeight = screenHeight - statusBarHeight; getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, dialogHeight); } private static int getScreenHeight(Activity activity) { DisplayMetrics displaymetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); return displaymetrics.heightPixels; } private static int getStatusBarHeight(Context context) { int statusBarHeight = 0; Resources res = context.getResources(); int resourceId = res.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { statusBarHeight = res.getDimensionPixelSize(resourceId); } return statusBarHeight; }}
1 0
- BottomSheetDialog 的两个坑
- BottomSheetDialog的使用
- BottomSheetDialog的简单实用
- 设置 BottomSheetDialog 的高度
- BottomSheetDialog的使用
- BottomSheetDialog
- BottomSheetDialog获得BottomSheetBehavior的方法
- BottomSheetDialog的使用及注意事项
- Android BottomSheetDialog透明问题的解决办法
- BottomSheetBehavior、BottomSheetDialog和BottomSheetDialogFragment的用法
- Android的Design库---BottomSheetBehavior和BottomSheetDialog
- BottomSheetDialog(design包的一个组件)
- 解决使用BottomSheetDialog时状态栏变黑的问题
- BottomSheetDialog高度不足够显示全部内容的解决办法
- 第一篇博客 干掉BottomSheetDialog的默认白色框
- Android BottomSheetDialog消失后再次无法显示的处理方法
- 自定义 BottomSheetDialog 背景样式
- BottomSheetDialog小优化
- 在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
- 小米2017校招面试经历
- 线性表的实现
- LeetCode 258. Add Digits 题解(C++)
- 研究Fast rcnn代码
- BottomSheetDialog 的两个坑
- 基带处理器的开发实践经验
- OpenStack中的API结构地图
- suse如何修改ssh端口为2222?
- Java程序员职业规划
- Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
- 《Apache Kylin建立cube时因字段存在换行符报错的问题处理》
- 用户态切换至内核态
- 工厂模板方法