无论是发帖,还是个人签名,为了防止刷屏,我们一般限制EditView输入的字数!
由于实现很简单,我直接上代码了:
<EditText android:id="@+id/ET" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:hint="个性签名" android:maxLength="32"/> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="32" android:textColor="@android:color/holo_blue_light" android:layout_gravity="right"/>
限制输入32个字,每输入一个就算显示剩余的输入数量,
然后超过32个字时将无法输入!
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.widget.TextView; public class TestOneActivity extends AppCompatActivity { private TextView hasnum; private EditText content; int num = 32; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_one); hasnum = (TextView) findViewById(R.id.tv); content = (EditText) findViewById(R.id.ET); hasnum.setText(num+""); //监听事件 content.addTextChangedListener(new TextWatcher() { private CharSequence temp; private int selectionStart; private int selectionEnd; public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { temp = s; } public void afterTextChanged(Editable s) { int number = num - s.length(); hasnum.setText("" + number); selectionStart = content.getSelectionStart(); selectionEnd = content.getSelectionEnd(); if (temp.length() > num) { s.delete(selectionStart - 1, selectionEnd); int tempSelection = selectionEnd; content.setText(s); content.setSelection(tempSelection);//设置光标在最后 } } }); } }