封装的自定义dialog,文本编辑,EditText,按需更改
2016-01-06 10:52
489 查看
自定义的弹窗,带文本编辑,按需更改 下面是封装好的抽象类 package b2a.main.utils; import android.content.Context; import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.Selection; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import b2a.main.R; /** * Created by pc-004 on 2015/10/19. */ public abstract class DialogMessage { public void dialogShowDiy(Context context, LinearLayout viewGroup, String leftTitle, String rightTitle, String leftBtn, String rightBtn, String eText) { final AlertDialog dialog = new AlertDialog.Builder(context).create(); dialog.setView(viewGroup); TextView txtvTitleLeft = (TextView) viewGroup.findViewById(R.id.txtv_tile_left); final TextView txtvTitleRight = (TextView) viewGroup.findViewById(R.id.txtv_title_right); TextView txtvBtnLeft = (TextView) viewGroup.findViewById(R.id.txtv_left_btn); TextView txtvBtnRight = (TextView) viewGroup.findViewById(R.id.txtv_right_btn); final EditText editText = (EditText) viewGroup.findViewById(R.id.etxt_area); editText.setText(eText); txtvTitleLeft.setText(leftTitle); txtvTitleRight.setText(rightTitle); txtvBtnLeft.setText(leftBtn); txtvBtnRight.setText(rightBtn); txtvBtnLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { leftBtnClick(editText); dialog.cancel(); } }); txtvBtnRight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rightBtnClick(editText); dialog.cancel(); } }); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { txtvTitleRight.setText(editText.length() + "/" + "300字"); Editable editable = editText.getText(); int len = editable.length(); if (len > 300) { int selEndIndex = Selection.getSelectionEnd(editable); String str = editable.toString(); //截取新字符串 String newStr = str.substring(0, 300); editText.setText(newStr); editable = editText.getText(); //新字符串的长度 int newLen = editable.length(); //旧光标位置超过字符串长度 if (selEndIndex > newLen) { selEndIndex = editable.length(); } //设置新光标所在的位置 Selection.setSelection(editable, selEndIndex); } } @Override public void afterTextChanged(Editable s) { } }); dialog.show(); } /** * 自定义dialog */ public abstract void leftBtnClick(EditText editText); public abstract void rightBtnClick(EditText editText); } 在activity或者是fragment中使用时,要实现这个抽象类
DialogMessage dialogMessage = new DialogMessage() { @Override public void leftBtnClick(EditText editText) { } @Override public void rightBtnClick(EditText editText) { } }; dialogMessage.dialogShowDiy(context, (LinearLayout) View.inflate(context, R.layout.dialog_input_area, null), input, "", context.getResources().getString(R.string.cancle), context.getResources().getString(R.string.save), etxt);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories