前言
最近接到一个需求要实现一个类IOS的底部dialog,当时我就要日了狗了,项目上都固定了使用的是Android原生dialog,现在变成IOS的,得改多少代码。。不过既然人家提了,该实现还是要实现的对吧!!先上个图:
实现方式
- 直接修改Android底层的dialog,加上宏控或者其他的标志位。当然作为一家手机ODM公司,这点还是可以做到的,但是没有公用性了。。
- 重新实现Dialog,我实现的AlerDialog,一是因为Google推荐使用,二是如果使用的是 DialogFragment也可以通过onCreateDialog的方式来重写
实现步骤
其实不想写这一步的,因为实现实在是太简单了一点,只不过要花一定的时间去做。。
- 截取Builder的方法,因为AlertDialog是通过Builder模式建立的,所以把一些Builder的方法改成自己的需求就行了
- 建立自己的底部的布局,我建立的是竖型LinearLayout
- 设置属性,其实设置自己需求的属性就可以了
- 创建Dialog,把布局设置进去,就大功告成了
使用方式
compile 'com.android.actionsheetdialog:actionsheet:1.0.3'
ActionSheetDialog dialog = new ActionSheetDialog.ActionSheetBuilder(MainActivity.this, R.style.ActionSheetDialogBase_SampleStyle)
.setItems(new CharSequence[]{"Item1", "Item2", "Item3"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "onClick Item: " + which, Toast.LENGTH_SHORT).show();
}
})
.setMessage("************")
.setTitle("电话号码")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "onClick() dialog", Toast.LENGTH_SHORT).show();
}
})
.setCancelable(true)
.create();
dialog.show();
源码
完整的源码在GitHub上
这里就不详细介绍了,稍微有点多,有问题可以提issue