添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

2.简单用法

  • BottomDialogFragment1其中R.layout.fragment_bottom_dialog 是dialog的布局,父布局的layout_height需要设置成wrap_content。里面的子布局可以设置高度。
package com.zhangyu.bottomsheetdialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
public class BottomDialogFragment1 extends BottomSheetDialogFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_bottom_dialog, container, false);
        initView(view);
        return view;
    private void initView(View view) {
  • 调用的地方
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.bt_test_1:
                new BottomDialogFragment1().show(getSupportFragmentManager(),"BottomDialogFragment1");
                break;

3.设置圆角

  • 圆角的shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FF402416" />
    <corners
        android:topLeftRadius="16dp"
        android:topRightRadius="16dp" />
</shape>
  • 设置默认背景透明(解决设置圆角时默认背景白色问题)
    <style name="BottomDialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--动画设置-->
        <item name="android:windowAnimationStyle">@style/Animation.Design.BottomSheetDialog</item>
    </style>
  • BottomDialogFragment2中,在onCreateDialog中设置setStyle(STYLE_NO_TITLE, R.style.BottomDialog);
public class BottomDialogFragment2 extends BottomSheetDialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        setStyle(STYLE_NO_TITLE, R.style.BottomDialog);
        return super.onCreateDialog(savedInstanceState);
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_bottom_dialog, container, false);
        initView(view);
        return view;
    private void initView(View view) {

4.禁止滑动收起底部栏

  • onCreateView中增加了一个 BottomSheetBehavior behavior=BottomSheetBehavior.from(getDialog().findViewById(R.id.design_bottom_sheet));
    通过behavior来控制隐藏行为
  • 需要在post中进行获取getDialog否则获取不到null。java.lang.NullPointerException: Attempt to invoke virtual method ‘android.view.View android.app.Dialog.findViewById(int)’ on a null object reference
public class BottomDialogFragment3 extends BottomSheetDialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        setStyle(STYLE_NO_TITLE, R.style.BottomDialog);
        return super.onCreateDialog(savedInstanceState);
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_bottom_dialog, container, false);
        view.post(new Runnable() {
            @Override
            public void run() {
                //R.id.design_bottom_sheet基本是固定的,不用担心后面API的更改
                BottomSheetBehavior behavior=BottomSheetBehavior.from(getDialog().findViewById(R.id.design_bottom_sheet));
                behavior.setHideable(false);//此处设置表示禁止BottomSheetBehavior的执行
        });
        initView(view);
        return view;
    private void initView(View view) {

5.传递参数重写show方法

public void show(@NonNull FragmentManager manager, @Nullable String tag, String userName, String industry) { super.show(manager, tag); this.userName = userName; this.industry = industry;

设置弹窗的弹出高度

        binding.root.post {
            //如果是小屏手机
            if (ScreenUtils.getAppScreenHeight() <= 1920) {
                val behavior = BottomSheetBehavior.from(requireDialog().findViewById(R.id.design_bottom_sheet))
                behavior.peekHeight = binding.airPanelMainLayout.measuredHeight

侧边弹出栏

https://blog.csdn.net/yu540135101/article/details/108756593

&lt;style name="BottomSheetDialogStyle" parent="Theme.Design.BottomSheetDialog"&gt; &lt;item name="android:windowFrame"&gt;@null&lt;/item&gt; &lt;item name="android:windowIsFloatin... BottomSheetDialogFragment是位于com.google.android.material包下的一个类. BottomSheetDialogFragment 继承自AppCompatDialogFragment AppCompatDialogFragment继承自DialogFragment 因为AppCompatDialogFragment 是一个特殊版本的DialogFragment, 所以其实可以看做BottomSheetDialogFragment是直接继承于DialogFr
在前面两篇我们介绍了Fragment的基本使用和Fragment配套ViewPager的使用,接下来我们就来看看除此之外其他的平时不常用但是我们很有必要掌握的其他的Fragment的基本使用。主要介绍的就是两种:DialogFragmentBottomSheetDialogFragment。 (一)DialogFragment DialogFragment看名字就知道是Dialog样式的Fragment,其推出的初衷就是为了解决传统Dialog无法与宿主的生命周期绑定导致需要后台时刻监听其动态变化,特别当
MD风格的底部窗,比自定义dialog或popupwindow使用更简单,功能也更强大。 其实细分来说,是BottomSheetBottomSheetDialogBottomSheetDialogFragment BottomSheet 与主界面同层级关系,可以事件触发,如果有设置显示高度的话,也可以拉出来,且不会影响主界面的交互。 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.
Android底部窗对话框说到底部窗突然想到几年前做运动轨迹时轨迹记录可以从底部窗选择相对时间的轨迹,那时候用的popwindow。老规矩先上效果图核心代码 final Dialog dialog = new Dialog(this, R.style.BottomDialogStyle); View view = View.inflate(this, R.layout.view_bo...
想要给BottomSheetDialogFragment出和消失加spring动画 1、遇到的问题 由于是spring的动效,无法使用下面设置windowAnimations的方法来 @Override public void onActivityCreated(Bundle arg0) { super.onActivityCreated(arg0); getDialog().getWindow() .getAttributes().windowAnimations = R.st
设置是否⽀持全局反色有静态和动态两种方法: 静态方式就是对应用或者activity的主题中声明<item name="android:forceDarkAllowed">true</item> 或者 <item name="android:forceDarkAllowed">false</item>; 动态⽅法是调用View.setForceDarkAllowed(true)或者View.setForceDarkAllowed(false),对DecorView设置可以对整个窗口起作⽤。小米文档写了,目前有用 FFmpeg scale宽高只能接受偶数,否则出错 height not divisible by 2 qq_41137507: trunc 啥意思啊 Android 使用adb修改手机分辨率、dpi 鱼骨路亚兰申飞: 大佬有偿改机器分辨率,能不能帮帮忙 ffmpeg实例,使用高斯模糊为视频生成一个模糊背景(gblur) tylk520: 1920*1080的视频就会被截去一半