使 edittext 在 60 个字符后不可编辑
Make edittext uneditable after 60 characs
我试图在 60 之后禁用文本进入 edittext characters.This 是我尝试实现的代码,
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) {
if (s.toString().replaceAll("\s", "").length() <= 40) {
edittext.setKeyListener(variable);
} else {
//edittext.setCursorVisible(false);
edittext.setKeyListener(null);
Toast.makeText(PersonalChatActivity.this, "60 characs allowed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void afterTextChanged(Editable s) {
edittext.setKeyListener((KeyListener)edittext.getTag());
}
});
还尝试设置 cetCoursorVisiblefalse(false) 、 setEnabled(false) 、 setFocusable(false) 、 setFocusableinTouchMode( false) 。当我尝试通过按键盘上的后退按钮清除文本时,所有这些工作 fine.But ,文本不是 clearing.Any 关于如何提前实施 this.Thanks 的建议。
尝试:
int maxLength = 60;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
myEditText.setFilters(fArray);
内部布局 xml,对于 edittext 小部件,您可以设置 android:maxLength
属性 的 edittext。
示例:
<Edittext
android:id="@+id/et_entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="60"
/>
所以在 60 个字符之后,它将不再接受来自用户的更多输入。但是,如果用户删除了一些字符,那么 edittext 将再次接受输入并将接受直到字符长度为 60。
我不确定这是否是准确的解决方案,但试试这个:
in xml.
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:maxLength="60"
android:layout_marginTop="72dp"
>
<requestFocus />
</EditText>
In activity:
editText = (EditText) findViewById(R.id.editText1);
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) {
if(editText.getText().length() >= 60){
Toast.makeText(MainActivity.this, "60 characs allowed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
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) {
if (!(s.toString().length() <= 60)) {
edittext.setText(s.subSequence(0, 60));
edittext.setSelection(edittext.getText().length());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
我试图在 60 之后禁用文本进入 edittext characters.This 是我尝试实现的代码,
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) {
if (s.toString().replaceAll("\s", "").length() <= 40) {
edittext.setKeyListener(variable);
} else {
//edittext.setCursorVisible(false);
edittext.setKeyListener(null);
Toast.makeText(PersonalChatActivity.this, "60 characs allowed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void afterTextChanged(Editable s) {
edittext.setKeyListener((KeyListener)edittext.getTag());
}
});
还尝试设置 cetCoursorVisiblefalse(false) 、 setEnabled(false) 、 setFocusable(false) 、 setFocusableinTouchMode( false) 。当我尝试通过按键盘上的后退按钮清除文本时,所有这些工作 fine.But ,文本不是 clearing.Any 关于如何提前实施 this.Thanks 的建议。
尝试:
int maxLength = 60;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
myEditText.setFilters(fArray);
内部布局 xml,对于 edittext 小部件,您可以设置 android:maxLength
属性 的 edittext。
示例:
<Edittext
android:id="@+id/et_entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="60"
/>
所以在 60 个字符之后,它将不再接受来自用户的更多输入。但是,如果用户删除了一些字符,那么 edittext 将再次接受输入并将接受直到字符长度为 60。
我不确定这是否是准确的解决方案,但试试这个:
in xml.
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="40dp"
android:maxLength="60"
android:layout_marginTop="72dp"
>
<requestFocus />
</EditText>
In activity:
editText = (EditText) findViewById(R.id.editText1);
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) {
if(editText.getText().length() >= 60){
Toast.makeText(MainActivity.this, "60 characs allowed", Toast.LENGTH_SHORT).show();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
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) {
if (!(s.toString().length() <= 60)) {
edittext.setText(s.subSequence(0, 60));
edittext.setSelection(edittext.getText().length());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});