edittext 设置显示长度(像素),字符长度 添加省略号
1.需要的工具类
public class StringUtil { /** * 获取字符串的长度,中文占一个字符,英文数字占半个字符 * * @param value * 指定的字符串 * @return 字符串的长度 */ public static int length(String value) { double valueLength = 0; String chinese = "[u4e00-u9fa5]"; // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 for (int i = 0; i < value.length(); i++) { // 获取一个字符 String temp = value.substring(i, i + 1); // 判断是否为中文字符 if (temp.matches(chinese)) { // 中文字符长度为1 valueLength += 1; } else { // 其他字符长度为0.5 valueLength += 0.5; } } // 进位取整 return (int) (Math.ceil(valueLength) * 2); } //输入框文字超长时间,转换字符内容 public static String get12Sub(String value) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < value.length(); i++) { // 获取一个字符 String temp = value.substring(i, i + 1); sb.append(temp); Paint paint = new Paint(); Rect rect = new Rect(); paint.getTextBounds(sb.toString(), 0, sb.toString().length(), rect); if (rect.width() >= 118) { sb.append("…"); Log.i("aaa", sb.toString()); return sb.toString(); } } return value; } }
2.自定义EditText,实现addTextChangedListener 和 onFocusChange方法
public MyEditorText(Context context, AttributeSet attrs) { super(context, attrs); this.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (StringUtil.length(MyEditorText.this.getText().toString()) >= 24) { int length = MyEditorText.this.getText().toString().length(); InputFilter[] filters = {new InputFilter.LengthFilter(length)}; MyEditorText.this.setFilters(filters); } else { InputFilter[] filters = {new InputFilter.LengthFilter(24)}; MyEditorText.this.setFilters(filters); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } });
this.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { String value = MyNormalEditorText.this.getText().toString(); textValue = value; String show = StringUtil.get12Sub(value); Log.i("aaa", "show......" + show); MyNormalEditorText.this.setText(show); } else { try { MyNormalEditorText.this.setText(textValue); MyNormalEditorText.this.setSelection(textValue.length()); } catch (Exception e) { Log.i("aaa", "输入框光标有误 :" + e.toString()); } } } }); } }
欢迎转载,但请标注原创地址!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。