[英]Make edittext uneditable after 60 characs
我正在嘗試禁止60個字符后的文本進入edittext。這是我嘗試實現的代碼,
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)。所有這些工作正常。但是當我嘗試通過按鍵盤上的后退按鈕清除文本時,該文本無法清除任何有關如何實現此目標的建議。
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) {
}
});
嘗試:
int maxLength = 60;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
myEditText.setFilters(fArray);
在布局xml內,對於edittext小部件,您可以設置edittext的android:maxLength
屬性。
例:
<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) {
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.