Bottom Sheets(底部动作条)使用介绍

2023-11-08 23:30

本文主要是介绍Bottom Sheets(底部动作条)使用介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bottom Sheets是Android Support Library 23.2出现的新特性,Github在这之前就有开源的BottomSheet效果,感兴趣的可以搜索研究下。

下边是整合BottomSheets的一些知识点:

底部动作条

底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能。底部动作条呈现了简单、清晰、无需额外解释的一组操作。

使用

底部动作条(Bottom Sheets)特别适合有三个或者三个以上的操作需要提供给用户选择、并且不需要对操作有额外解释的情景。如果只有两个或者更少的操作,或者需要详加描述的,可以考虑使用菜单(Menu)或者对话框替代。

底部动作条(Bottom Sheets)可以是列表样式的也可以是宫格样式的。宫格布局可以增加视觉的清晰度。

你可以使用底部动作条(Bottom Sheets)展示和其 app 相关的操作,比如做为进入其他 app 的入口(通过 app 的 icon 进入)。

Bottom Sheet 一共有五个状态回调:

  • STATE_COLLAPSED 
    折叠状态。可通过app:behavior_peekHeight来设置默认显示的高度。

  • STATE_SETTING 
    拖拽松开之后到达终点位置(collapsed or expanded)前的状态。

  • STATE_EXPANDED 
    完全展开的状态。

  • STATE_HIDDEN 
    隐藏状态。默认是false,可通过app:behavior_hideable属性设置。

  • STATE_DRAGGING 
    被拖拽状态

BottomSheet的使用:

1、在AndroidStudio的build.gradle文件下,依赖 compile'com.android.support:design:23.2.0'

2、新建activity_main.xml布局文件;此处需要注意的是必须在CoordinatorLayout视图下添加一个View属性是 app:layout_behavior="android.support.design.widget.BottomSheetBehavior"的控件。这个控件可以是NestedScrollView,也可以是RecyclerView。

<span style="font-size:18px;"><android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main_content"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingTop="24dp"><Buttonandroid:id="@+id/button_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="STATE_EXPANDED"android:padding="16dp"android:layout_margin="8dp"android:textColor="@android:color/white"android:background="#ff669900"/><Buttonandroid:id="@+id/button_2"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"android:layout_margin="8dp"android:text="STATE_COLLAPSED"android:textColor="@android:color/white"android:background="#ff33b5e5"/><Buttonandroid:id="@+id/button_3"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"android:layout_margin="8dp"android:text="BottomSheetDialog"android:textColor="@android:color/white"android:background="#ffcc0000"/></LinearLayout></ScrollView><android.support.v4.widget.NestedScrollViewandroid:id="@+id/bottom_sheet"android:layout_width="match_parent"android:layout_height="350dp"android:clipToPadding="true"android:background="#ffffbb33"app:layout_behavior="android.support.design.widget.BottomSheetBehavior"><!--此处用于填充BottomSheets的自定义样式--><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="底部动作条(Bottom Sheets)特别适合有三个或者三个以上的操作需要提供给用户选择、并且不需要对操作有额外解释的情景。如果只有两个或者更少的操作,或者需要详加描述的,可以考虑使用菜单(Menu)或者对话框替代。底部动作条(Bottom Sheets)可以是列表样式的也可以是宫格样式的。宫格布局可以增加视觉的清晰度。你可以使用底部动作条(Bottom Sheets)展示和其 app 相关的操作,比如做为进入其他 app 的入口(通过 app 的 icon 进入)。"android:padding="16dp"android:textSize="16sp"/></android.support.v4.widget.NestedScrollView></android.support.design.widget.CoordinatorLayout></span>


3、然后就是MAinActivity的代码,直接粘贴过来,里边也有BottomSheets的用法:

package com.glodon.bottomsheetsdemo;import android.os.Bundle;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private BottomSheetBehavior<View> mBottomSheetBehavior;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);View bottomSheet = findViewById( R.id.bottom_sheet );Button button1 = (Button) findViewById( R.id.button_1 );Button button2 = (Button) findViewById( R.id.button_2 );Button button3 = (Button) findViewById( R.id.button_3 );button1.setOnClickListener(this);button2.setOnClickListener(this);button3.setOnClickListener(this);mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);mBottomSheetBehavior.setPeekHeight(300);//设置内容栏默认高度mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {@Overridepublic void onStateChanged(View bottomSheet, int newState) {if (newState == BottomSheetBehavior.STATE_COLLAPSED) {mBottomSheetBehavior.setPeekHeight(0);//设置内容栏默认高度为0,即用户看不到}}@Overridepublic void onSlide(View bottomSheet, float slideOffset) {}});}@Overridepublic void onClick(View v) {switch( v.getId() ) {case R.id.button_1: {mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);break;}case R.id.button_2: {mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);break;}case R.id.button_3: {final BottomSheetDialog bottomSheetDialog=new BottomSheetDialog(MainActivity.this);bottomSheetDialog.setContentView(R.layout.bottom_sheet_dialog_layout);bottomSheetDialog.findViewById(R.id.tv_dialog_cancel).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {bottomSheetDialog.dismiss();}});bottomSheetDialog.show();break;}}}
}

效果图:



附上Demo



这篇关于Bottom Sheets(底部动作条)使用介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373061

相关文章

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队