本文只列出核心实现代码,具体实现请参考附件。
布局如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent" android:orientation="vertical" android:padding="5dp" > <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_top_normal" android:gravity="center" android:text="@string/title" android:textColor="#8F8F8F" android:textSize="16sp" /> <TextView android:id="@+id/smallTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_middle_selector" android:gravity="center" android:text="@string/small" android:textColor="#000000" android:textSize="16sp" /> <TextView android:id="@+id/middleTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_middle_selector" android:gravity="center" android:text="@string/middle" android:textColor="#000000" android:textSize="16sp" /> <TextView android:id="@+id/bigTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_bottom_selector" android:gravity="center" android:text="@string/big" android:textColor="#000000" android:textSize="16sp" /> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/actionsheet_single_selector" android:gravity="center" android:text="@string/cancel" android:textColor="#037BFF" android:textSize="16sp" /> </LinearLayout>
具体实现如下:
package com.eric.actionsheet; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface.OnCancelListener; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; public class ActionSheet { public interface OnActionSheetSelected { void onClick(int whichButton); } private ActionSheet() { } public static Dialog showSheet(Context context,final OnActionSheetSelected actionSheetSelected,OnCancelListener cancelListener) { final Dialog dlg = new Dialog(context, R.style.ActionSheet); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.actionsheet, null); final int cFullFillWidth = 10000; layout.setMinimumWidth(cFullFillWidth); TextView smallContent = (TextView) layout.findViewById(R.id.smallTextView); TextView middleContent = (TextView) layout.findViewById(R.id.middleTextView); TextView bigContent = (TextView) layout.findViewById(R.id.bigTextView); TextView mCancel = (TextView) layout.findViewById(R.id.cancel); smallContent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionSheetSelected.onClick(0); dlg.dismiss(); } }); middleContent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionSheetSelected.onClick(1); dlg.dismiss(); } }); bigContent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionSheetSelected.onClick(2); dlg.dismiss(); } }); mCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionSheetSelected.onClick(3); dlg.dismiss(); } }); Window w = dlg.getWindow(); WindowManager.LayoutParams lp = w.getAttributes(); lp.x = 0; final int cMakeBottom = -1000; lp.y = cMakeBottom; lp.gravity = Gravity.BOTTOM; dlg.onWindowAttributesChanged(lp); dlg.setCanceledOnTouchOutside(false); if (cancelListener != null) dlg.setOnCancelListener(cancelListener); dlg.setContentView(layout); dlg.show(); return dlg; } }
调用示例:
ActionSheet.showSheet(MainActivity.this, MainActivity.this, MainActivity.this);
相关推荐
"安卓IOS风格相关-模仿IOS里面的UIActionSheet控件.rar"这个压缩包文件,显然提供了一种尝试在Android平台上实现类似iOS中UIActionSheet控件的方法。UIActionSheet是iOS系统中的一个组件,通常用于显示一系列可选...
在iOS开发中,UIActionSheet是苹果提供的一种用于展示用户可以选择的多个操作的视图控件,通常在用户触发某种需要确认或者有多种选择的情况下出现。这个压缩包“IOS应用源码——UIActionSheet 的美化效果.rar”显然...
在iOS开发中,UIActionSheet是苹果提供的一种用于展示用户可以选择的多个操作的视图,通常在用户需要进行一项或多向选择时出现。然而,原生的UIActionSheet控件存在一些限制,例如不支持自定义字体大小和颜色。鉴于...
在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要实现类似iPhone的UI组件。在iOS中,UIActionSheet是一种常见的控件,用于展示一系列可供用户选择的选项,通常在底部弹出。而在Android中,我们可以...
标题“ios应用源码之仿uialertview和uiactionsheet的一个效果”所提及的,就是这样的一个自定义实现。 `UIAlertController`和`UIActionSheet`在iOS 8之后被引入,替代了之前的`UIAlertView`和`UIActionSheet`,因为...
通过研究这个源码,开发者不仅可以学习到如何实现类似UIAlertView和UIActionSheet的效果,还能了解到如何在组件被弃用后进行兼容性开发,这对于维护老项目或兼容旧版本iOS系统非常有价值。同时,这也是一种对苹果...
这个压缩包"IOS应用源码Demo-仿UIAlertView和UIActionSheet的一个效果-毕设学习.zip"提供了一个实例,帮助开发者了解如何在没有这些原生组件的情况下实现类似的功能。在iOS 8之后,UIAlertView和UIActionSheet已被...
这个源码可能实现的是一种兼容旧API与新API的方式,或者是一个完全自定义的控件,以保持类似UIAlertView和UIActionSheet的用户体验,同时避免了使用已被弃用的API。开发者可能通过创建自定义视图,调整布局,设置...
标题“iOS效果的ActionSheet”表明我们将讨论如何在iOS应用中实现类似`UIActionSheet`或`UIAlertController`的弹出式选择界面。这个标题暗示我们将探讨如何在低版本的iOS系统(如低于iOS 5)中也能实现这一功能,这...
在iOS应用开发中,为了提供用户友好的交互体验,经常需要实现类似桌面删除应用程序的效果,即用户长按应用图标后可以进行编辑或删除操作。这种功能常见于许多自定义应用列表或者模仿iOS主屏幕的应用中。本文将详细...
在iOS开发中,UIActionSheet是一种常用的用户界面元素,它用于提供用户多个操作选项,通常在屏幕底部以半透明的视图形式呈现。这个压缩包"ios-多功能选择器,UIActionSheet,仿微信ActionSheet.zip"包含了一个自定义的...
在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要实现类似iOS的UI组件,其中之一就是`UIActionSheet`。在iOS中,`UIActionSheet`是一个用于展示多个选项供用户选择的弹出视图,通常在底部弹出,包含...
SYActionSheetView实现了类似于UIActionSheet的效果,简单易用,完美支持IOS5.0及以上版本。 用法: SYActionSheetView *actv = [[SYActionSheetView alloc] initWithTitle:nil cancelButtonTitle:@"cancle" ...
例如,`android-uiactionsheet`库就是一个很好的选择,它提供了直接在Android上使用类似iOS UIActionSheet的功能。只需添加依赖,然后调用库提供的方法,就可以快速创建和展示一个UIActionSheet。 在使用开源库时,...
如果你需要在新版本的iOS上实现类似的效果,你需要使用`UIAlertController`并调整其样式以达到类似的目的。 总之,`UIActionSheetDemo`是一个很好的学习资源,它帮助开发者理解如何在旧版iOS上使用UIActionSheet,...
通过深入研究这个源码,开发者可以学习到如何在iOS应用中实现弹出列表框效果,掌握如何自定义视图、处理用户输入以及创建动态的UI动画。这对于提升iOS开发技能非常有帮助,特别是对于那些想要优化用户界面体验的...
在iOS中,我们可以使用多种方法来实现弹出列表框的效果,例如使用UIActionSheet、UIAlertController,或者自定义视图。下面将详细介绍这些方法及其优缺点。 1. UIActionSheet(已弃用) 在iOS 8以前,...
在iOS中,弹出框通常通过UIAlertController、UIActionSheet或自定义视图实现。UIAlertController提供了弹出警告或提示的功能,可以包含一个或多个按钮供用户选择。UIActionSheet已经废弃,但它是以前创建类似弹出框...