• Android---底部弹窗之BottomSheetDialog


    BottomSheetDialog 是Android开发中的一个弹出式对话框,它从屏幕底部弹出并覆盖部分主界面。

    1. BottomSheetDialog的使用

    1. // 参数2:设置BottomSheetDialog的主题样式;将背景设置为transparent,这样我们写的shape_bottom_sheet_dialog.xml才会起作用
    2. BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this, R.style.BottomSheetDialog);
    3. //不传第二个参数
    4. //BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this);
    5. // 底部弹出的布局
    6. View bottomView = LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_layout, null);
    7. bottomSheetDialog.setContentView(bottomView);
    8. //设置点击dialog外部不消失
    9. //bottomSheetDialog.setCanceledOnTouchOutside(false);
    10. bottomSheetDialog.show();

    2.加载布局

    bottom_sheet_layout.xml ; 通过LayoutInflater拿到底部弹窗布局后,通过setContentView()把布局加载到BottomSheetDialog中。

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="wrap_content"
    5. android:orientation="vertical"
    6. android:background="@drawable/shape_bottom_sheet_dialog">
    7. <TextView
    8. android:id="@+id/choose_photo"
    9. android:layout_width="match_parent"
    10. android:layout_height="50dp"
    11. android:text="从手机相册选择"
    12. android:textSize="15sp"
    13. android:textColor="#191919"
    14. android:gravity="center"/>
    15. <View
    16. android:layout_width="match_parent"
    17. android:layout_height="1dp"
    18. android:background="#F5F5F5"/>
    19. <TextView
    20. android:id="@+id/check_photo"
    21. android:layout_width="match_parent"
    22. android:layout_height="50dp"
    23. android:text="查看上一张头像"
    24. android:textSize="15sp"
    25. android:textColor="#191919"
    26. android:gravity="center"/>
    27. <View
    28. android:layout_width="match_parent"
    29. android:layout_height="1dp"
    30. android:background="#F5F5F5"/>
    31. <TextView
    32. android:id="@+id/save_photo"
    33. android:layout_width="match_parent"
    34. android:layout_height="50dp"
    35. android:text="保存到手机"
    36. android:textSize="15sp"
    37. android:textColor="#191919"
    38. android:gravity="center"/>
    39. <View
    40. android:layout_width="match_parent"
    41. android:layout_height="10dp"
    42. android:background="#F5F5F5"/>
    43. <TextView
    44. android:id="@+id/cancel"
    45. android:layout_width="match_parent"
    46. android:layout_height="50dp"
    47. android:text="取消"
    48. android:textSize="15sp"
    49. android:textColor="#191919"
    50. android:gravity="center"/>
    51. LinearLayout>

    3.显示

    通过调用  BottomSheetDialg.show()方法就能将底部弹窗给显示出来。

    4. BottomSheetDialog 圆角设置

    写一个shape,在Drawable下创建一shape_bottom_sheet_dialog.xml,里面设置圆角的样式。

    1. "1.0" encoding="utf-8"?>
    2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:shape="rectangle">
    4. <corners android:topLeftRadius="@dimen/dime_10dp"
    5. android:topRightRadius="@dimen/dime_10dp"/>
    6. <solid android:color="@color/white"/>
    7. shape>

    把bottom_sheet_layout.xml的整个背景设置为shape_bottom_sheet_dialog.xml这个shape。

    通过上面的设置,圆角效果并没有展示出来。 还需要将BottomSheetDialog的背景设置为透明。在themes.xml(res->values->themes)添加下面两个style。

    1. <style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog">
    2. <item name="bottomSheetStyle">@style/bottomSheetStyleWrapperitem>
    3. style>
    4. <style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal">
    5. <item name="android:background">@android:color/transparentitem>
    6. style>

    在new BottomSheetDialog()的第二个参数,传入这个style.

    new BottomSheetDialog(this, R.style.BottomSheetDialog);

  • 相关阅读:
    CentOS 7关闭防火墙命令
    QT-day3
    Servlet(一)
    白炽灯和led哪个护眼?分享真正适合孩子的护眼台灯
    【响应式编程】Schedulers之线程池共用问题
    [ffmpeg系列] 从应用的角度学习ffmpeg
    Vue获取url路由地址、参数
    基于免费敏捷工具Leangoo领歌的Scrum敏捷管理实践
    持续集成部署-k8s-资源调度:标签和选择器
    css齿轮转动效果
  • 原文地址:https://blog.csdn.net/qq_44950283/article/details/132920575