EditText
goalName设置为maxLength
30 InputFilter
(java),android:maxLength="30"
(xml声明)。
但是在第30个字母之后,字母没有显示在字段中,但剪贴板(键盘建议)显示所有字母。我在下面显示了在第30个字母后剩下显示0个字符的剩余字符数。但是我必须通过按退格键删除所有这些额外的字符。当它到达第30个字母时它开始显示1个字符左边等等。
final InputFilter ip = new InputFilter.LengthFilter(30);
goalName.setFilters(new InputFilter[]{ip});
/*To find no of Characters Left for Goal Name*/
goalName.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) {
noOfChar.setText((30 - s.length()) + " characters left");
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 0 :(得分:0)
尝试这样做:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length() > 30) s = s.subSequence(0,30);
goalName.requestFocus(30);
noOfChar.setText((30 - s.length()) + " characters left");
}
只是测试,因为它应该在29而不是30完成,我不确定这部分
并尝试删除过滤器:
//final InputFilter ip = new InputFilter.LengthFilter(30);
//goalName.setFilters(new InputFilter[]{ip});
只需使用Xml声明:
android:inputType="textPersonName"
android:maxLength="30"
android:maxLines="1"
答案 1 :(得分:0)
如果你在没有加载edittext的情况下进入android的新设计会更好。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:counterEnabled="true"
app:counterMaxLength="30"
app:counterTextAppearance="@style/TextLimitStyle">
<android.support.design.widget.TextInputEditText
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:hint="Say something..."
android:maxLength="30" />
</android.support.design.widget.TextInputLayout>
答案 2 :(得分:0)
当我将 android:maxLength
与 android:inputType="textMultiline"
一起使用时,我遇到了同样的问题,即我的 EditText 不遵守字符限制。我发现使用 InputFilter
/LengthFilter
有助于完成这项工作。
Kotlin 中的示例用法:
val MAX_CHARS_LENGTH: Int = ...
val myEditText: EditText = ...
myEditText.filters = arrayOf(LengthFilter(MAX_CHARS_LENGTH))
对于字符数显示,我建议覆盖 afterTextChanged
而不是 onTextChanged
答案 3 :(得分:-1)
android:maxLength="30"
将它放在布局文件
中的EditText中喜欢这个
<EditText
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginTop="10dip"
android:background="@drawable/edit_textbox_new_background"
android:gravity="top"
android:inputType="textMultiLine"
android:lines="5"
android:maxLength="500"
android:padding="10dip" />