Android BottomSheetDialogFragment底部弹出栏的几种用法(圆角、禁止滑动收起)

1.引入

implementation 'com.android.support:design:29.1.0'

在这里插入图片描述

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据给定的信息,我们可以计算出湖羊的生长周期和不同阶段所需的空间要求。根据提供的数据,自然交配期为20天,孕期为149天,每胎产羔2只,哺乳期为40天,羔羊育肥期为210天,母羊空怀休整期为20天。现有标准羊栏数量为112个。养殖场希望每年出栏不少于1500只羊。 要确定种公羊和基础母羊的合理数量,我们可以按照生长周期和阶段的要求进行计算。首先,我们需要确定每个阶段所需的羊只数量和比例,例如基础母羊和种公羊等。然后,我们需要确定每个阶段的羊只栏的规格和容量。 根据提供的数据,我们可以计算出每个阶段所需的羊只数量。在湖羊的生长周期中,基础母羊和种公羊的数量应该满足繁殖需求。根据每胎产羔2只和孕期149天的数据,我们可以计算出基础母羊和种公羊的合理数量。 然后,我们需要确保每个阶段的羊只栏的规格和容量足够满足需求。根据现有的标准羊栏数量和每个阶段的羊只数量,我们可以估算出现有标准羊栏数量的缺口。如果养殖场希望每年出栏不少于1500只羊,那么我们可以根据每个阶段的羊只数量和生长周期来计算出所需的标准羊栏数量。 综上所述,根据提供的信息,我们可以确定养殖场种公羊和基础母羊的合理数量,并估算出年化出栏羊只数量的范围。同时,我们还可以估算出现有标准羊栏数量的缺口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值