EditText에 남아있는 문자 수를 카운트하는 카운터 라벨 TextView를 만들었습니다. 나는 EditText 안에 196 개의 문자를 허용하고있다. EditText 문자 수가 0에 도달하면 카운터 레이블의 텍스트 색을 빨간색으로 변경하고 EditText를 비활성화하여 사용자가 더 많은 문자를 입력 할 수 없도록합니다.EditText 문자 카운트 다운 문제
사용자 입력을 허용하기 위해 마지막으로 입력 한 문자를 삭제하려고하면 문제가 발생합니다. 내가 뭘 하려는지 논리적 인 EditText가 더 이상 true가 아니라 EditText가 활성화되고 카운터 라벨의 텍스트 색상이 다시 흰색으로 바뀌고 카운트가 업데이트되도록 마지막 문자를 삭제하는 것입니다. 그러나 필자가 작성한 코드는 작동하지 않으며 EditText는 비활성화 된 상태로 유지됩니다. 비활성화하려면 addTextChangedListener를 사용하고 다시 사용하려면 onTouchListener를 사용하고 있습니다.
사용자의 터치를 캡처하고, UITextView를 활성화하고, DELETEBACKWARD 함수를 사용하여 마지막 문자를 삭제하고, 개수를 업데이트하는 TOUCHESBEGAN 메소드를 사용하여 iOS에서이 작업을 관리했습니다. 누군가 내 코드를 연구하고 안드로이드에 올바른 방향으로 나를 가리킬 수 있습니까?
public class MessageInputView extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message_input_view);
final ImageView continueButton = (ImageView) findViewById(R.id.continueButton);
final ImageView backButton = (ImageView) findViewById(R.id.backButton);
final EditText editText = (EditText) findViewById(R.id.editText);
final TextView counterLabel = (TextView) findViewById(R.id.counterLabel);
final int characterMax = 196;
final MediaPlayer mediaPlayer = (MediaPlayer.create(MessageInputView.this, R.raw.droplet_sound));
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
counterLabel.setText(characterMax - editable.toString().length() + " characters remaining");
if (editText.length() == characterMax){
counterLabel.setTextColor(Color.parseColor("#FF0000"));
editText.setEnabled(false);
}
}
});
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN){
editText.setEnabled(true);
String userText = editText.getText().toString();
editText.setText(userText.substring(0, userText.length() - 1));
counterLabel.setTextColor(Color.parseColor("#FFFFFF"));
counterLabel.setText(characterMax - editText.length() + " characters remaining");
}
return true;
}
});