限制字数, 并且实时显示字数的EditText
来源:互联网 发布:中金数据系统 编辑:程序博客网 时间:2024/05/03 20:30
最近换了新工作,有幸进入了一家C轮互联网公司,算是达到了职业规划的近期目标吧。
比起之前的小公司确实各方面都正规完善了很多,就Android来说,工程中对很多组件都进行了自己的封装。
前一阶段刚入公司,比较忙,现在已经缓和下来了,所以准备继续学习并写博客进行记录总结。
回归正题,今天下午写了一个简单的自定义控件,限制字数并且实时显示字数的EditText。
类文件:
public class LimitScrollEditText extends LinearLayout { private String hint; private int maxLength; private EditText content; private TextView textCount; private TextWatcher textWatcher; public LimitScrollEditText(Context context) { this(context, null); } public LimitScrollEditText(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public LimitScrollEditText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initAttrs(attrs); initView(context); initData(); } private void initAttrs(AttributeSet attrs) { TypedArray arr = getContext().obtainStyledAttributes(attrs, R.styleable.LimitScrollEditText); if (arr != null) { hint = arr.getString(R.styleable.LimitScrollEditText_hint); maxLength = arr.getInt(R.styleable.LimitScrollEditText_maxLength, 0); arr.recycle(); } } private void initView(Context context) { inflate(context, R.layout.layout_limit_scroll_edittext, this); // 因为布局layout_limit_scroll_edittext使用了merge标签, 所以需要设置方向 setOrientation(VERTICAL); content = (EditText) findViewById(R.id.content); textCount = (TextView) findViewById(R.id.textCount); } private void initData() { setHint(hint); setMaxLength(maxLength); setTextWatcher(); } public void setHint(String hint) { if (!TextUtils.isEmpty(hint)) content.setHint(hint); } public void setMaxLength(int maxLength) { this.maxLength = Math.max(0, maxLength); content.setFilters(new InputFilter[]{new InputFilter.LengthFilter(this.maxLength)}); setTextCount(); } private void setTextWatcher() { textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { setTextCount(); } }; content.addTextChangedListener(textWatcher); } private void setTextCount() { if (TextUtils.isEmpty(content.getText())) { textCount.setText("0/" + maxLength); } else { textCount.setText(content.getText().toString().length() + "/" + maxLength); } }}
xml文件:
<?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:padding="10dp"> <EditText android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null" android:textSize="14sp" tools:hint="请输入文字" /> </ScrollView> <TextView android:id="@+id/textCount" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:gravity="right|center_vertical" android:paddingRight="10dp" android:textSize="14sp" tools:text="0/10" /></merge>
资源文件:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="LimitScrollEditText"> <attr name="hint" format="string" /> <attr name="maxLength" format="integer" /> </declare-styleable></resources>
使用起来,很简单,如下:
Activity文件:
public class LimitScrollEditTextActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_limit_scroll_edittext); initView(); } private void initView() { LimitScrollEditText limitScrollEditText = (LimitScrollEditText) findViewById(R.id.limitScrollEditText); limitScrollEditText.setMaxLength(200); limitScrollEditText.setHint("最多输入200字"); }}
还有xml文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.example.tsnt.view.LimitScrollEditText.LimitScrollEditText android:id="@+id/limitScrollEditText" android:layout_width="match_parent" android:layout_height="100dp" app:hint="Hello world!" app:maxLength="10" /></LinearLayout>
效果图:
源代码地址:https://github.com/tingshuonitiao/AndroidStudy.git
阅读全文
1 0
- 限制字数, 并且实时显示字数的EditText
- EditText 实时显示输入的字数与最大输入限制长度
- 限制EditText的输入字数
- android EditText限制输入字数并显示剩余字数
- Edittext字数限制且显示剩余可输入字数
- 限制textarea字数并实时显示输入字数统计
- EditText右下角实时显示输入字数
- EditText字数限制
- EditText限制输入字数
- 限制EditText输入字数
- EditText 字数限制输入
- EditText 输入字数限制
- EditText字数限制
- EditText限制输入字数
- EditText设置字数限制
- EditText 设置字数限制,超过字数限制时 toast 提示并且输入无效
- 实时判断EditText里面输入的字数
- android EditText限制输入字数的方法
- vs2013下如何调试带输入参数的程序
- [leetcode] 740. Delete and Earn
- scala + sbt + intellij
- 锁存器(74HCT573)使用
- 搭建Apache虚拟目录
- 限制字数, 并且实时显示字数的EditText
- 硬币游戏
- 《文法俱乐部》读书笔记之不定词片语--LG二进制
- 字符串- KMP算法
- Java中抽象类和接口的对比分析
- 为什么说不真实的产品测试是无效的?
- [BZOJ1787][Ahoi2008]Meet 紧急集合
- tf17: “声音大挪移”
- static关键字