首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在安卓系统中,DisplayActionSheet()不会将销毁按钮放在顶部

基础概念

DisplayActionSheet() 是一种在移动应用中显示操作选项的UI组件,通常用于提供一系列用户可执行的操作。在安卓系统中,这种操作表通常会显示在屏幕的底部,而不是顶部。

相关优势

  • 用户友好:操作表提供了一种直观的方式来展示多个选项,使用户能够快速做出选择。
  • 节省空间:相比于弹出一个全屏对话框,操作表更加节省屏幕空间,不会遮挡过多的内容。
  • 灵活性:可以根据需要自定义操作表的样式和行为。

类型

  • 底部弹出式:最常见的类型,从屏幕底部弹出。
  • 顶部弹出式:较少见,但在某些情况下可能需要。

应用场景

  • 菜单选择:当用户需要从多个选项中选择一个时。
  • 设置调整:允许用户快速访问和修改应用设置。
  • 分享功能:提供多种分享渠道供用户选择。

问题原因

在安卓系统中,DisplayActionSheet() 默认不会将销毁按钮放在顶部,主要是因为安卓的设计规范通常建议操作表从屏幕底部弹出,这样更符合用户的操作习惯和直觉。

解决方法

如果确实需要将操作表显示在顶部,可以通过自定义布局来实现。以下是一个简单的示例代码,展示如何创建一个自定义的顶部操作表:

代码语言:txt
复制
// 创建一个自定义的Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.TopSheetDialogTheme);
builder.setView(R.layout.custom_action_sheet);

// 设置标题和按钮
builder.setTitle("选择一个选项");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 处理确定按钮点击事件
    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 处理取消按钮点击事件
    }
});

// 显示对话框
AlertDialog dialog = builder.create();
dialog.show();

自定义样式

styles.xml 文件中添加自定义样式:

代码语言:txt
复制
<style name="TopSheetDialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowBackground">@drawable/dialog_background</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_in_top</item>
    <item name="android:windowExitAnimation">@anim/slide_out_top</item>
</style>

参考链接

通过上述方法,你可以实现一个自定义的顶部操作表,满足特定的设计需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UnityUnreal 插件集成iOSAndroid 的血泪总结

.Build.cs 部分引入 Launch 的依赖:PublicDependencyModuleNames.Add("Launch"); UPL.xml 文件的编写比 iOS 复杂的多,而且每一项配置都是有意义的...把按钮添加到游戏中顶部菜单中选择 "Edit" -> "Project Settings" -> "Maps and Modes", Default GameMode 选项中选择刚刚创建的 "MyGameMode...点击顶部菜单的“Compile”按钮,保存好 Level 之后,关闭 Level Blueprint 编辑,项目设置的“Maps & Modes”,选择默认的 Level:点击顶部菜单的“Play”...配置好 teamId 并选择 Automatic Signing 即可:打包打包相对麻烦很多,因为依赖的环境更多。...open descriptor file ../../.uproject"使用 build 目录的 Install_UE4demo-arm64.command 安装3、启动报错 Error:

2.6K63
  • Android N上一些新特性的介绍「建议收藏」

    新的系统快捷开关 Android N,下拉打开通知栏顶部即可显示5个用户常用的快捷开关,支持单击开关以及长按进入对应设置。...4.通知信息快速回复 Android N加入了全新的API,支持第三方应用通知的快捷操作和回复,例如来电会以横幅方式屏幕顶部出现,提供接听/挂断两个按钮;信息/社交类应用通知,还可以直接打开键盘,输入栏里进行快捷回复...系统级电话黑名单功能 Android N,谷歌将电话拦截功能变成了一个系统级功能。其它应用可以调用这个拦截名单,但只有个别应用可以写入,包括拨号应用、默认的短信应用等。...更快应用安装速度 Android N采用了一项具有实时代码剖析功能的ARI JIT编译器,它能够应用程序在运行时不断提高自身的性能,其带来的另一项优势就是能够为应用安装引入一种新的“快速通道...”(quick path),能够大大加快应用安装和系统更新的速度,即便是那些大型的应用程序如游戏,6.0需要几分钟时间才能安装和优化完成的,7.0仅仅需要几秒钟就可以搞定。

    1.3K20

    Android 1.5到10.0 都有哪些新特性?

    全新下拉快捷开关页 7.0,下拉打开通知栏顶部即可显示5个用户常用的快捷开关,支持单击开关以及长按进入对应设置。...通知消息快捷回复 7.0加入了全新的API,支持第三方应用通知的快捷操作和回复,例如来电会以横幅方式屏幕顶部出现,提供接听/挂断两个按钮;信息/社交类应用通知,还可以直接打开键盘,输入栏里进行快捷回复...通知消息归拢 7.0会将同一应用的多条通知提示消息归拢为一项,点击该项即可展开此前的全部通知,允许用户对每个通知执行单独操作。...夜间模式 7.0重新加入了夜间深色主题模式,该功能依然需要在系统调谐器开启,从顶部下划打开快捷设置页,然后长按其中的设置图标,齿轮旋转10秒钟左右即可提示已开启系统调谐器,之后用户设置即可找到...改进的Doze休眠机制 谷歌7.0对Doze休眠机制做了进一步的优化,在此前的6.0,Doze深度休眠机制对于改善的续航提供了巨大的作用。

    2.1K20

    React Native 系列(九) -- Tab标签组件

    那么这篇文章将介绍RN的Tab标签组件。 Tab标签 什么是Tab标签?(ps:我是这样叫的),就拿微信来说吧,底部有4个选项卡,点击不同的按钮切换不同的内容。...注意如果你使用了此属性,标题和自定义图标都会被覆盖为系统定义的值。 title string :图标下面显示的标题文字。...推荐 } tabBarPosition:设置tabbar的位置,iOS默认底部,默认顶部。...5.0) pressOpacity:按压标签的透明度变化(版本需要小于5.0) scrollEnabled:是否启用可滚动选项卡 tabStyle:tab的样式...本地图片存放位置 直接放在RN项目中 可以放在ios项目中,放到images.xcassets文件 可以放在android项目中(图片文字不能以数字开头,也不能有大写字母) 如何加载本地图片

    6.5K90

    android刘海屏适配(刘海屏或圆角适配)

    P版本也就是刚发布的9.0 其中就加入了刘海屏相关的API。其相关行为与功能变更也是非常多的,从其变更的趋势及功能来看,google进一步的收紧权限。...P发布公测版到7月底,想必不少开发者都收到了来自各大应用市场发来的邮件。 邮件内容以其中一家为例(具体市场名称已隐匿): 尊敬的开发者: 您好!...这样就导致我们不得不去适配P了。 收到邮件后,查阅谷歌官方的资料,更新SDK。其中UI最大的改变就是需要适配刘海屏。...但是国内厂商为了快速抢占全面屏手机市场,系统8.1的基础上,硬件就弄出了刘海屏,例如华为nova 3e, oneplus 6, oppo r15, vivo x21,但是系统支持没有更上,没有一个统一的...系统默认支持的宽高比是1.7-1.8左右。具体多少值忘记了。有同学知道的在下方留言哦。但是现在出现了比值大于1.8了会出现什么情况呢?

    2.1K10

    移动端那些戳你痛点的软键盘问题及解决方法

    大厂技术 坚持周更 精选好文 问题 问题描述: ios手机,当页面包含有输入框时,点击输入框,键盘弹起,会让页面中被fixed的元素失效。所以造成了底部吸底和顶部吸顶的元素错位的问题。...先要弄懂的问题 解决这些问题之前,需要弄明白以下2个问题: 1、当键盘弹起来的时候,会发生什么 这里ios和系统下表现的并不一致。...衍生问题: 但这样引出了一个新的问题:系统下的app端,会有底部按钮被遮挡的问题。 GIF 如下: ?...衍生问题解决办法 之前header头用的是前端自己写的header时,没有这个问题,推测是因为手机键盘弹起时的webview高度缩短为整个屏幕的高度减去键盘的高度, 之前的实现,由于使用沉浸式...2、吸底元素(也就是按钮)能够键盘弹出之后,出现在键盘的上方 对于这个问题,因为表现是webview缩小,所以上并不存在这个问题,对于ios,因为ios向上滚动的距离最大是键盘的高度,但是也有可能滚动距离不是键盘高度

    8.5K30

    为前端工程师写的入门知识

    一、环境配置 环境配置相对来说还比较简单,一般官网下载Android Studio之后,创建个Hello World项目就是可以顺利编译的。...这个过程Java环境和一些依赖的sdk环境,都是自动帮忙配置好。但是为了让我们能够命令行里使用类似adb java等命令。...可以找个adb文件,放在自己的环境变量里也就可以用了。前提是手机打开了开发者选项的usb调试。...举个例子,v21指的是系统版本21对应的就是5.0。在这个目录下可以使用5.0的新方法,对5.0及以后的版本的机型有效。这样适配不同版本的机型时,每个目录下都放一个同样文件名的配置文件。...五、主线程 主线程也是中一个非常关键的概念。不像js只有一个线程,java可以开很多线程,甚至不同的进程。 当APP启动时,系统会创建一个主线程。这个线程主要负责绘制UI和响应用户的交互。

    1.4K30

    Android 进阶2:Activity 的 Task 与启动模式

    有时候我们要进行一些跨应用的操作,比如拍照、P 图、分享到朋友圈,这一系列操作中会有多个应用的 Activity 互相调用,系统是如何管理这些不同应用的 Activity 的呢?...这些 Activity 按照各自的打开顺序排列堆栈。 反应在界面上,当我们点击第三个导航菜单按钮,出现在列表的就是一个个 Task。 ? 从上图中可看到,一个应用可以包含多个 Task。...系统将保留 Task 每个 Activity 的状态。如果用户稍后通过选择开始任务的启动器图标来恢复任务,则该 Task 将出现在前台并恢复执行堆栈顶部的 Activity。...但是,如果用户同时运行多个后台任务,则系统可能会开始销毁后台 Activity,以回收内存资源,从而导致 Activity 状态丢失。...(调用onNewIntent()) Thanks 开发艺术探索 https://developer.android.com/guide/components/tasks-and-back-stack.html

    1.5K50

    用uniapp开发跨端应用开发打包发布完整指南

    应用打包 1、点击:发行 - 原生App-云打包 2、按照unpackage/cert目录下的README.md说明填写: Android包名、证书别名、证书私钥密码、选择证书文件(直接点浏览按钮,...dist/build/mp-weixin 2、H5 和web网站一样,将最终打包出来的H5文件部署到线上:dist/build/h5 3、Android 最终生成的apk文件,可以直接用聊天工具发送到手机上安装使用...去注册各大安应用市场账号,上传到应用市场供用户下载 也可以自己开发一个发布页,将apk放到项目里,用户点击直接下载到手机里,如果设备是ios还可以直接判断让跳转到appstore下载地址 4、IOS...浏览器里打开即可直接下载安装,或者直接在safari浏览器输入“下载地址” 附:windows下生成安开发证书 Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名...也可以指定完整文件路径 36500:是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期 按提示输入信息后就会在D盘根目录下生成 android.keystore 文件,这个文件就可以用来直接打包

    61010

    用uniapp开发跨端应用开发打包发布完整指南

    - 小程序/网站 - 设置小程序/网站名字/appid/域名,打包成功后可以dist - build 文件夹下找到对应平台的打包文件(dist - dev 目录下对应的是各平台运行文件)六、应用打包...:dist/build/mp-weixin2、H5 和web网站一样,将最终打包出来的H5文件部署到线上:dist/build/h53、Android 最终生成的apk文件,可以直接用聊天工具发送到手机上安装使用...去注册各大安应用市场账号,上传到应用市场供用户下载 * 也可以自己开发一个发布页,将apk放到项目里,用户点击直接下载到手机里,如果设备是ios还可以直接判断让跳转到appstore下载地址4...浏览器里打开即可直接下载安装,或者直接在safari浏览器输入“下载地址”附:windows下生成安开发证书Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,...也可以指定完整文件路径36500:是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期按提示输入信息后就会在D盘根目录下生成 android.keystore 文件,这个文件就可以用来直接打包

    2.3K51

    第四夜 概念漫游(下)

    第三夜 概念漫游(上),我介绍了最基本的功能单元和Intent的连接方式。在这个骨架之上,我们可以进一步增加一些与开发密切相关的重要概念。...界面上总是有各种各样的视图元素,比如一个按钮,一行文字和一个输入栏。每一种视图元素中表示为一个View类,比如Button类,TextView类和EditText类。...Fragment的运行方式与Activity类似,也是状态转换调用onStart()等方法。 Resource 开发,有可能需要一些静态资源,比如图片、字符串、XML文件等等。...这些资源被存储项目res/下不同的文件夹。 ? 不同资源分类存放。我们上面提到用XML来定义布局,它们就保存在layout下。...drawable*的文件夹包含不同清晰度的图片,而字符串存放在values下的strings.xml项目中,我们可以用ID或文件名,来引用对应的资源。

    1.1K100

    activity生命周期有几种状态_activity生命周期七种方法

    activity生命周期(这篇足够了) 摘要 做开发已经4年多了,所接触的知识点也比较零散,在这里记录一下android方面的知识点,方便自己以后复习,有什么不足的,以及错误的欢迎拍砖。...activity的四个状态 关于activity的四个状态: running-poused-stopped-killed running->当前显示屏幕的activity(位于任务栈的顶部),用户可见状态...outState 参数作用 : 数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象;...方法调用注意事项 : 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法; 调用时机固定 : 该方法一定是 onStop() 方法之前调用,...Activity 被系统销毁之后 恢复 Activity 时被调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity, 就不需要调用; – Bundle 对象传递

    1.2K10

    移动端弹性布局方案lib-flexible实践

    (注:该文中提到的网易的做法跟淘宝的做法其实是大同小异,你访问http://3g.163.com/touch/看下页面源码顶部的JS就能明白了。...然后美工750*1334的设计稿之上,按我的要求提供以下素材的切图: ? 包括两个下载按钮的背景图片,logo,底部梯形的渐变背景和body部分的mobile 背景图。...我把美工给我的750*1334的设计稿下的切图都放在img/@2x 这个文件夹下: ?...data-dpr属性来处理,类似下面的写法: [data-dpr="2"] p {   font-size: 16px; } [data-dpr="3"] p {   font-size: 24px; } 以下载按钮的样式为例...到现在都还没提到@3x下图的那些切图怎么办,其实很简单,借助html元素的data-dpr属性,可以轻松实现另一种媒介查询,以便在devicePixelRatio>=2的时候启用@3x下的图片,还是以下载按钮的样式为例

    1.9K10

    react-navigation,刷新你的导航一、属性介绍二、案例

    当然只有5.0以上才有效果 gesturesEnabled:是否支持滑动返回手势。...iOS默认支持,默认关闭 screen:对应界面名称,需要填入import之后的页面 mode:定义跳转风格 card:使用iOS和默认的风格。...iOS默认底部,默认顶部 swipeEnabled:是否允许标签之间进行滑动 animationEnabled:是否更改标签时显示动画 lazy:是否app打开的时候将底部的标签栏全部加载...:设置活跃状态下,label和icon的背景色 showLabel:是否显示label,默认卡其style:tabbar的样式 labelStyle:label的样式 属性 activeTintColor...端和iOS的文件混合成为index.js文件。而文件App.js注册到了又注册到了index.js文件。故我们将需要用到的代码编写在App.js文件

    19.7K90

    华为EMUI多窗口模式适配指南

    1.2 智慧分屏创新点 华为智慧分屏,原生的分屏功能基础上,进行了一系列的优化: (1)收编原有分屏入口,提供统一的多窗口启动入口,可快速完成应用的窗口化启动; (2)为IM类应用消息通知提供悬浮窗入口...; (3)最近任务提供悬浮窗入口; (4)系统导航(Home、Back、Recent)操作多窗口和独占模式下实现了体验归一,多窗口模式退到后台以后,可以通过最近任务进行快速切换。...2.1 如何声明支持多窗口 华为智慧分屏多窗口适配方法与原生多窗口适配策略相同, 或 节点中添加声明,启用多窗口显示,即可加入到侧边栏dock列表..."] 官方多窗口适配参考链接: https://developer.android.com/guide/topics/ui/multi-window.html 2.2 正确使用应用资源 开发者适配多窗口模式时...bar,因此应用在布局时,需要调用原生的WindowInsetsListener接口顶部预留一定的空间,注意不要使用固定高度。

    1.5K30

    《QQ音乐小电台》小程序开发

    IOS、播放暂停切歌 IOS,机下播放过程先暂停在切换歌曲,发现播放的歌曲为原先的歌曲。...同步播放状态 机下播放一首歌曲且同时打开新页面(播放页),同步上一页面播放态,wx.getBackgroundAudioPlayerState在有歌曲播放的情况下status返回为2,且状态返回...appServer线程运行在jsCore下运行在X5,开发工具运行在nwjs),所以js不跑webview里,不能直接操纵DOM和BOM,这就是为什么小程序没有window全局变量。...仅当小程序在后台运行超过一定时间未被唤起、或者用户手动小程序的控制栏里点击退出程序、或者小程序内存占用过大被关闭时,小程序被销毁,会触发app.onUnload事件。...当用户离开小程序后,音乐将暂停播放;当用户点击“显示聊天顶部”时,音乐不会暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。

    4.7K10

    不讲武德的微信,又来一波新功能!

    不过提醒下,目前只有IOS支持该变化,的客群还要再等等。...内测版 用的童鞋们可能看了上面的文章有些失落,别灰心,因为人生往往是有得必有失,这不,下面要给大家介绍的就是最新的微信内测版。...此次版本为置顶直播提供了关闭按钮。 具体的操作方法是:点击右上方的“X”图标即可弹出关闭选项,选择“清空”按钮就可以清除该直播内容。...1、增加“随便看看”按钮 信息流页面顶部最左侧,新增了该按钮,通过点击该按钮,可以跳转至一个视频结合页面,类似抖音,各种类型的视频都有,闲暇时刻可以刷刷看看。...最后,给大家准备了微信内测版安装包,大家快来下载试试吧!

    55930

    16.Android-activity生命周期与启动模式

    暂停状态 如果一个活动失去了焦点,但仍然可见(也就是说,一个新的非全尺寸或透明的活动将焦点放在了活动的顶部),那么它将被暂停。...: 当onStart ()之后或者取消暂停后,会调用该方法 onRestart() : 当取消停止后,会调用该方法 onPause() : 当另个非全尺寸或透明的活动将焦点放在了活动的顶部,那么该活动就会进入暂停状态...) : activity被系统杀死或者调用finish方法主动退出,那么会调用该方法, 一般在这个方法中用于释放资源, 2.activity启动模式 Android开发,如果我们通过一个按钮重复打开...比如:我们在当前MainActivity通过按钮重复打开第二个MainActivity,系统就会检测到当前栈顶正在运行的activity实例等于要打开的activity实例,就不会创建实例....singleTask单独实例模式 只能拥有唯一实例,创建使用该模式的activity的实例之前,会自动在任务栈匹配实例,如果之前未创建,那么就在栈顶创建一个实例,如果已存在,那么会将它上面的其它所有

    57510
    领券