简单快捷的自定义 Dialog
来源:互联网 发布:淘宝的淘友能看到什么 编辑:程序博客网 时间:2024/05/20 14:42
之前的一篇博客里面提到了自定义 Dialog ,然而在项目中一般不会用到那种写法。
下面整理一个平时常用的 自定义 Dialog ,方便后面项目开发中使用。
效果图:
code :
public void showFeedBackDialog() { View view = LayoutInflater.from(this).inflate(R.layout.dialog_setting, null); TextView title = V.find(view, R.id.tv_title); TextView content = V.find(view, R.id.tv_content); final EditText et_content = V.find(view, R.id.et_content); TextView cancel = V.find(view, R.id.tv_cancel); TextView confirm = V.find(view, R.id.tv_confirm); title.setText(getString(R.string.feedback)); content.setVisibility(View.GONE); et_content.setVisibility(View.VISIBLE); et_content.setHint(getString(R.string.feedback_hint)); confirm.setText(getString(R.string.commit)); final Dialog dialog = new Dialog(this, R.style.style_loading_dialog); dialog.setContentView(view); // 点击外部是否可取消 Dialog dialog.setCanceledOnTouchOutside(false); // 点击返回按钮是否能取消 Dialog dialog.setCancelable(false); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); confirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (et_content.getText().toString().length() <= 0) { toast("请输入反馈内容"); return; } client.FEEDBACK(mToken, et_content.getText().toString()); // TODO 点击提交按钮 dialog.dismiss(); } }); Display dm = getWindowManager().getDefaultDisplay(); WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = (int) (dm.getWidth() * 0.7); dialog.getWindow().setAttributes(lp); dialog.show(); }
上面是根据所占屏幕的比例来设置 Diaolog 的宽度,如果需要根据设计图所给定的大小来设置,可以使用下面这种方式:
DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();lp.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 210, dm);lp.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 148, dm);dialog.getWindow().setAttributes(lp);
创建 Dialog 的样式我这边也直接贴出来:
<!--Dialog 样式--><style name="style_loading_dialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item></style>
界面布局这里就不贴了,只是作为一个常用功能整理。
再次简化一下 Dialog 的创建:
/** * 创建 Dialog * * @param context * @param view 布局视图 * @param scale 宽度比例 * @return */ public static Dialog createDialog(Context context, View view, float scale) { final Dialog dialog = new Dialog(context, R.style.style_loading_light_dialog); dialog.setContentView(view); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(true); Display dm = ((Activity) context).getWindowManager().getDefaultDisplay(); WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = (int) (dm.getWidth() * scale); dialog.getWindow().setAttributes(lp); dialog.show(); return dialog; }
使用:
public static void uploadFailedAlert(Context context, final View.OnClickListener clickListener) { View view = LayoutInflater.from(context).inflate(R.layout.dialog_upload_failed, null); final Dialog dialog = createDialog(context, view, 0.7f); V.find(view, R.id.tv_cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); if (clickListener != null) { clickListener.onClick(v); } } }); }
1 1
- 简单快捷的自定义 Dialog
- 自定义Dialog的简单实现
- Android 简单的自定义Dialog
- 一个简单的自定义Dialog
- Android 简单的自定义dialog
- 一个简单的自定义Dialog
- android最简单的自定义全屏Dialog
- Android简单实用的自定义Dialog
- Android自定义最简单的dialog
- android 自定义dialog的简单实现
- Android 自定义Dialog的简单实现
- 实现一个简单的自定义Dialog弹窗。
- 自定义dialog简单封装
- android_自定义dialog去除黑边_快捷方法
- 【Android】快捷自定义Dialog对话框并获取属性
- 简单的自定义一个拥有圆角的Dialog
- Android自定义Dialog简单实例
- Android简单自定义Dialog样式
- python入门笔记(Day1)--变量,字符(串),tuple,list,set,dict,判断,循环
- scala进阶10-路径依赖
- Android中获取坐标点的一些方法解释
- CentOS英文环境下使用ibus输入法
- study hadoop 1
- 简单快捷的自定义 Dialog
- qduoj 分辣条2(完全背包,装满问题)
- ubuntu的Panel消失的解决方法
- OC_键值编码KVC(Key-Value Coding)
- 游戏中常见的作弊方式及对应策略
- Spark不同Cluster Manager下的数据本地性表现
- SQL注入之注释
- 测试博客
- 度熊的哈希 hdu5685