简单使用BottomSheetBehavior实现底部弹窗
这次带来的是BottomSheetBehavior的简单使用,BottomSheetBehavior是Android Support Library23.2中引入的,它可以轻松实现底部动作条功能。
使用方法
●xml布局
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> //按钮要使用布局包裹否则会浮在BottomSheetBehavior之上 <Button android:layout_width="wrap_content" android:text="打开" android:id="@+id/bt" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/design_bottom_sheet1" android:layout_width="match_parent" android:layout_height="match_parent" //这个高度决定了BottomSheetBehavior的总高度 android:background="@color/colorAccent" app:behavior_hideable="true" //可以隐藏 app:behavior_peekHeight="300dp" //设置弹出时的高度 android:orientation="vertical" app:elevation="6dp" app:layout_behavior="@string/bottom_sheet_behavior" //这一句固定要加> <ImageView android:layout_width="wrap_content" android:layout_gravity="center" android:src="@mipmap/ic_launcher" android:layout_marginTop="20dp" android:layout_height="wrap_content" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
●Activity代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final BottomSheetBehavior bottomSheetBehavior=BottomSheetBehavior.from(findViewById(R.id.design_bottom_sheet1)); //设置默认先隐藏 bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //根据状态不同显示隐藏 if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } else if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); } } }); //设置监听事件 bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { //拖动 } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { //状态变化 } }); } }
扩展(BottomSheetDialogFragment实现底部弹窗)
●xml布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:background="@color/colorAccent" android:layout_centerHorizontal="true" android:src="@mipmap/ic_launcher" android:layout_height="200dp" /> </RelativeLayout>
●BottomSheetDialogFragment代码
public class BottomSheetDialogFragmenttest extends BottomSheetDialogFragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.test,container,false); } }
●Activity代码
findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { BottomSheetDialogFragmenttest bottomSheetDialogFragmenttest=new BottomSheetDialogFragmenttest(); bottomSheetDialogFragmenttest.show(getSupportFragmentManager(),BottomSheetDialogFragmenttest.class.getSimpleName()); } });
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android屏幕适配,目前完美
描述 Android开发最经常遇到也是一个比较烦人的问题就是UI的适配问题了。 比如: 1、最常见的就是在小米手6适配好了之后,测试用了一个OPPO R9测试,发现你的控件比小米手机显示的的要宽。 2、还有就是明明是同样的尺寸,同样的分辨率的手机手机宽度的dpi竟然也不相同..... 图0 造成上面的问题主要是不同尺寸、分辨率、系统的rom不同造成的,以下是我的一些测试: 红米note 分辨率:1280720 / 尺寸:5.5 / dpi:360 三星s7 分辨率:25601440模式 / 尺寸:5.1 / dpi:360 三星s7 分辨率:19201080模式 / 尺寸:5.1 / dpi:360 乐视2 分辨率:19201080 / 尺寸:5.5 / dpi:411 OPPO R9 分辨率:19201080 / 尺寸:5.5 / dpi:360 华为mate9 分辨率:19201080 / 尺寸:5.9 / dpi:393 小米max2 分辨率:19201080 / 尺寸:6.44 / dpi:392 小米5 分辨率:19201080 / 尺寸:5.1 / dpi:360 这里的d...
- 下一篇
Zabbix监控PV和UV
Zabbix-server:172.21.97.153 Zabbix-agent(Nginx):172.17.27.61 # Nginx日志如下: # head -3 Syz.access.log www.qcxin.com 39.67.200.12 [17/Aug/2018:01:20:55 +0800] "GET /pci-doctor/api/verification_code/register?mobile=17686984883 HTTP/1.1" 404 162 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1.1; vivo Xplay5A Build/LMY47V)" 0.000 - 172.17.27.60 www.qcxin.com 58.214.14.250 [17/Aug/2018:01:22:17 +0800] "GET /pci-doctor/api/verification_code/register?mobile=13717177753 HTTP/1.1" 404 162 "-" "Dalvik/2.1.0 (Linux;...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题