android 上拉固定高度显示,下拉关闭View BottomSheetDialog

news/2024/11/16 16:22:01/

具体代码 复制使用

1,新建一个BottomBaseStationDialogLayout.java类继承BottomSheetDialogFragment

public class BottomBaseStationDialogLayout extends BottomSheetDialogFragment {

public static BottomBaseStationDialogLayout getInstance() {return new BottomBaseStationDialogLayout();
}@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {return new BottomSheetDialog(this.getContext());
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {mContext = getContext();Log.e("TAG", "onCreateView: ");view = inflater.inflate(R.layout.bottombasestation_dialog_layout, container,false);initViews(view);initData();return view;
}
@Override
public void onStart() {Log.e("TAG", "onStart: ");super.onStart();//获取dialog对象BottomSheetDialog dialog = (BottomSheetDialog) getDialog();//把windowsd的默认背景颜色去掉,不然圆角显示不见dialog.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//获取diglog的根部局FrameLayout bottomSheet = dialog.getDelegate().findViewById(R.id.design_bottom_sheet);if (bottomSheet != null) {//获取根部局的LayoutParams对象CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) bottomSheet.getLayoutParams();layoutParams.height = getPeekHeight();//修改弹窗的最大高度,不允许上滑(默认可以上滑)bottomSheet.setLayoutParams(layoutParams);final BottomSheetBehavior<FrameLayout> behavior = BottomSheetBehavior.from(bottomSheet);//peekHeight即弹窗的最大高度behavior.setPeekHeight(getPeekHeight());int height = (int) (getPeekHeight() * 0.8);LogUtils.i(">>>>>>>>>>>>>>>>>>>>>>>>>>>>> " + height);// 初始为展开状态behavior.setState(BottomSheetBehavior.STATE_EXPANDED);//关闭弹窗 // behavior.setState(BottomSheetBehavior.STATE_HIDDEN);}
}
private void initViews(View view) {
//这里进行控件的初始化
}
private void initData() {//这里可以进行数据的初始化}
/***这里设置view显示的高度,如果不设置BottomSheetDialog默认是显示全屏* @return height*/
protected int getPeekHeight() {int peekHeight = getResources().getDisplayMetrics().heightPixels;//设置弹窗高度为屏幕高度的比例return peekHeight - peekHeight / 10;
}

}

 2,如何调用 使用 在MainActivity.java中

public class MainActivity extends Activity{
@Override
public void onCreate() {//点击按钮调用
BottomBaseStationDialogLayout fragment = new BottomBaseStationDialogLayout(); fragment.show(this, "ssss");}
}

http://www.ppmy.cn/news/1052878.html

相关文章

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由&#xff08;Directly Connected Route&#xff09;是指网络拓扑结构中相邻两个网络设备直接相连的路由&#xff0c;也称为直接路由。如果两个设备属于同一IP网络地址&#xff0c;那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…

mac指定node版本 mac node版本降级 mac切换node版本

本文解决问题&#xff1a; mac指定node版本 mac切换node版本 mac node版本降级 第一步 进行nvm 安装操作 brew install nvm 执行 nvm --version nvm --version 出现zsh: command not found: nvm问题去进行配置第二步 nvm配置 1.输入: vim ~/.bash_profile 点击 i 进行插入…

redis 6个节点(3主3从),始终一个节点不能启动

redis节点&#xff0c;始终有一个节点不能启动起来 1.修改了配置文件 protected-mode no&#xff0c;重启 修改了配置文件 protected-mode no&#xff0c;重启redis问题依然存在 2、查看/var/log/message的redis日志 Aug 21 07:40:33 redisMaster kernel: Out of memory: K…

解决npm安装依赖失败,node和node-sass版本不匹配的问题

npm安装依赖报错&#xff1a; npm ERR! cb() never called! npm ERR! This is an error with npm itself. 一. 问题描述 用npm安装依赖报错&#xff1a; npm ERR! cb() never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! …

STM32--MPU6050与I2C外设

文章目录 前言MPU6050参数电路MPU6050框图 IIC外设框图 IIC的基本结构软件IIC实现MPU6050硬件IIC实现MPU6050 前言 在51单片机专栏中&#xff0c;用过I2C通信来进行实现AT24C02的数据存储&#xff1b; 里面介绍的是利用程序的编程来实现I2C的时序&#xff0c;进而实现AT24C02与…

设计模式二十一:状态模式(State Pattern)

一个对象的内部状态发生变化时&#xff0c;允许对象改变其行为。这种模式使得一个对象看起来好像在运行时改变了它的类&#xff0c;主要目的是将状态的行为从主要对象中分离出来&#xff0c;使得主要对象不必包含所有状态的逻辑&#xff0c;而是将每个状态的行为封装在独立的类…

怎样做好数字营销呢?

2023 年&#xff0c;数字营销将随着新技术、趋势和消费者行为的不断发展而不断发展。要在 2023 年在数字营销领域取得成功&#xff0c;请考虑以下策略&#xff1a; 1.内容质量和个性化&#xff1a; 专注于制作与目标受众产生共鸣的高质量且相关的内容。 根据用户偏好、行为和…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 4 Data store标签页介绍

这篇文章我们继续讲解code-mapping的Data stores页,这个页的内容对应的SIMULINK中的模块是Data store memory。 我们首先在模型中创建一个Data store memory模块,如图: Data store memory模块的作用相当于一个全局变量,我们可以在模型的功能逻辑里将一个信号存进去,在另…