Android 带输入框圆角Dialog--EditDialog
来源:互联网 发布:通过网络社会治理案例 编辑:程序博客网 时间:2024/04/18 12:19
在做项目二的时候,有一个这样的需求:
这种效果是iOS中默认的是圆角效果, 在Android中就需要自己写了, 这里拿出来作为我的第一篇正式技术博客分享给大家,随便总结一下 , 其实就是一个组合控件。废话先不多说, 直接上实现代码 :
public class EditDialog extends Dialog implements View.OnClickListener { private View mView; private Context mContext; private LinearLayout mBgLl; private TextView mTitleTv; private EditText mMsgEt; private Button mNegBtn; private Button mPosBtn; public EditDialog(Context context) { this(context, 0, null); } public EditDialog(Context context, int theme, View contentView) { super(context, theme == 0 ? R.style.MyDialogStyle : theme); this.mView = contentView; this.mContext = context; if (mView == null) { mView = View.inflate(mContext, R.layout.view_enter_edit, null); } init(); initView(); initData(); initListener(); } private void init() { this.setContentView(mView); } private void initView() { mBgLl = (LinearLayout) mView.findViewById(R.id.lLayout_bg); mTitleTv = (TextView) mView.findViewById(R.id.txt_title); mMsgEt = (EditText) mView.findViewById(R.id.et_msg); mNegBtn = (Button) mView.findViewById(R.id.btn_neg); mPosBtn = (Button) mView.findViewById(R.id.btn_pos); } private void initData() { //设置背景是屏幕的0.85 mBgLl.setLayoutParams(new FrameLayout.LayoutParams((int) (getMobileWidth(mContext) * 0.85), LayoutParams.WRAP_CONTENT)); //设置默认为10000 mMsgEt.setHint(String.valueOf(10000)); } private void initListener() { mNegBtn.setOnClickListener(this); mPosBtn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_neg: //取消, if(onPosNegClickListener != null) { String mEtValue = mMsgEt.getHint().toString().trim(); if(!mEtValue.isEmpty()) { onPosNegClickListener.negCliclListener(mEtValue); } } this.dismiss(); break; case R.id.btn_pos: //确认 if(onPosNegClickListener != null) { String mEtValue = mMsgEt.getText().toString().trim(); if(!mEtValue.isEmpty()) { // if (mEtValue.length() > 8 || mEtValue.length() < 4 || Integer.parseInt(mEtValue) <= 0) { // //TODO 这里处理条件 // } onPosNegClickListener.posClickListener(mEtValue); } } this.dismiss(); break; } } private OnPosNegClickListener onPosNegClickListener; public void setOnPosNegClickListener (OnPosNegClickListener onPosNegClickListener) { this.onPosNegClickListener = onPosNegClickListener; } public interface OnPosNegClickListener { void posClickListener(String value); void negCliclListener(String value); } /** * 工具类 * @param context * @return */ public static int getMobileWidth(Context context) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; // 得到宽度 return width; } }
这里用了一个回调方法, 对外提供, 不用过多解释, 主要说一下要实现圆角, 最主要的是MyDialogStyle这个文件, 在加一个圆角的背景, 看看里面的实现:
res/values/styles.xml
<style name="MyDialogStyle" parent="@android:style/Theme.Dialog"> <!--背景透明--> <item name="android:windowBackground">@android:color/transparent</item> <!--没有标题头--> <item name="android:windowNoTitle">true</item> <!-- 是否允许背景灰暗 --> <item name="android:backgroundDimEnabled">true</item></style>
我试的时候只需要上面两个属性就行了, android:backgroundDimEnabled 默认是true, 如果设置成false弹出dialog的时候就背景就会不变暗!
具体用法可以在点击方法中如下调用:
EditDialog editDialog = new EditDialog(this);editDialog.show();editDialog.setOnPosNegClickListener(new EditDialog.OnPosNegClickListener() { @Override public void posClickListener(String value) { Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); mTv.setText(value); } @Override public void negCliclListener(String value) { Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show(); mTv.setText(value); }});
实现的效果如下:
ps: 希望自己能坚持下去!
自己也第一次使用git上传项目源码到github, 中间也遇到一些问题, 准备在下一篇文章中总结出来 !
点击这里下载源码
0 0
- Android 带输入框圆角Dialog--EditDialog
- Android 带输入框圆角Dialog--EditDialog
- android带输入框的Dialog
- Android带输入框的dialog
- 带输入的Dialog
- Android 带密码输入界面的Dialog实现机制
- 带输入文本框的Dialog
- 底部弹出带输入dialog
- Android自定义Dialog带分隔的8位输入框按钮回调输入值
- 简单dialog---带输入框/确定/取消
- Android自定义Dialog带Dialog的显示消失动画(一)
- Android Dialog使用、自定义带动画的Dialog使用
- 带输入框DIalog自动弹出软键盘
- android 自定义带关闭按钮的dialog
- android 自定义dialog 带动画的
- Android系统自带的Dialog
- Android 自定义带动画的dialog
- Android 解决dialog无法弹出输入键盘
- 每个ios开发者都应该知道Top 10 Swift三方库
- Python 文本挖掘:使用情感词典进行情感分析
- poj2251
- 嵌入式程序员面试问题集锦
- 1002:谁拿了最多奖学金
- Android 带输入框圆角Dialog--EditDialog
- XML和Json格式的比较
- zookeeper运维参考文档
- codeforces 613A Peter and Snow Blower
- justep工具使用(规则约束)
- 第一篇文章。留个标记。
- 关于listview自定义滚动条和背景
- Python动态监控日志的内容
- javascript数组取值