自定义Dialog样式
2017-01-16 09:13
190 查看
自定义Dialog样式
前言
平时项目开发总要自定义dialog满足产品的设计需求,但系统提供Dialog和AlertDialog用起来不是很方便,所以自己封装一个好用的Dialog基类是再好不过了。实现:
BaseDialog.java
import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.view.View; import android.view.WindowManager; /** * Created by liuwen */ public abstract class BaseDialog { protected Context context; private Dialog dialog; protected abstract int getDialogStyleId();//子类实现获取样式id protected abstract View getView();//子类实现内容布局View protected BaseDialog(Context context){ this.context=context; //初始化基础对话框 if (getDialogStyleId()==0){ dialog=new Dialog(context); }else { dialog=new Dialog(context,getDialogStyleId()); } //dialog设置内容布局view dialog.setContentView(getView()); //关闭系统键盘 dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); } /** * dialog设置能否点击取消,链式 */ public BaseDialog setCancelable(boolean cacel){ dialog.setCancelable(cacel); return this; } /** * dialog显示,链式 */ public BaseDialog show(){ dialog.show(); return this; } /** * dialog消失,链式 */ public BaseDialog disMiss(){ dialog.dismiss(); return this; } /** * dialog是否在显示,链式 */ public boolean isShowing(){ return dialog.isShowing(); } /** * dialog消失监听,链式 */ public BaseDialog setOnDismissListener(DialogInterface.OnDismissListener dismissListener){ dialog.setOnDismissListener(dismissListener); return this; } /** * dialog取消监听,链式 */ public BaseDialog setOnCancelListener(DialogInterface.OnCancelListener cancelListener){ dialog.setOnCancelListener(cancelListener); return this; } /** * dialog显示监听,链式 */ public BaseDialog setOnShowListener(DialogInterface.OnShowListener onShowListener){ dialog.setOnShowListener(onShowListener); return this; } }YuanJiaoDialog.java
/**
* Created by liuwen .
*/
public class YuanJiaoDialog extends BaseDialog {
public YuanJiaoDialog(Context context) {
super(context);
}
@Override
protected int getDialogStyleId() {
return R.style.dialog_style_one;
}
@Override
protected View getView() {
View view= LayoutInflater.from(context).inflate(R.layout.dialog_conent_layout,null);
return view;
}
}dialog_style_one
<style name="dialog_ios_style" parent="@android:style/Theme.Dialog">
<!--window 背景,这里可以设置整个窗体的背景,不过会被窗体里面的内容布局覆盖,圆角,窗体大小在某种情况下可以通过这里的背景设置-->
<item name="android:windowBackground">@drawable/yuanjiao_background</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowMinWidthMajor">100%</item>
</style>yuanjiao_background.xml 窗体背景布局xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
>
<size android:height="200dp" android:width="200dp"/>
<corners android:radius="20dp"/>
<solid android:color="@android:color/white" />
</shape>
相关文章推荐
- 自定义Dialog样式+大小+位置
- 自定义dialog样式,自动弹出软件盘
- 自定义Dialog样式的activity页面(附有二维码生成代码)
- js ondocumentready onmouseover onclick onmouseout 样式
- android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题
- 取消chrome浏览器下input和textarea的默认样式
- 结构-行为-样式-Bootstrap笔记
- 自定义系统样式Notification
- Bootstrap3基础 clearfix pull-left/right 辅助类样式 快速左右浮动
- 百度空间酝酿改版 新样式模仿Facebook风格
- jsp内嵌jsp后样式丢失,当两个jsp单独显示样式存在问题的解决方法
- 你熟悉 SVG 样式的书写吗?
- 结构-行为-样式-Angularjs-ngSanitize
- 原生js实现导航栏点击之后添加样式
- 微信小程序中wxml和wxss的样式说明,彻底搞定布局排版
- 后台控制checkbox的样式
- Wpf 动态添加控件设置样式
- 如何优化网页的打印样式?
- TextView中各个部分的文本来设置字体,大小,颜色,样式
- 安卓BottomSheet实现——样式定义