【发布时间】:2014-10-08 07:01:35
【问题描述】:
我已经构建了一个计数器标签 TextView,它对 EditText 中剩余的字符数进行倒计时。我在 EditText 中允许 196 个字符。当 EditText 字符数达到零时,我将计数器标签的文本颜色更改为红色,并禁用 EditText,因此用户无法输入更多字符。
当我尝试删除输入的最后一个字符以启用用户输入时,我的问题出现了。我想要做的是删除最后一个字符,以便禁用 EditText 的逻辑不再正确,EditText 变为启用,计数器标签的文本颜色变回白色,并且计数被更新。但是,我编写的代码不起作用,并且 EditText 保持禁用状态。我正在使用 addTextChangedListener 来禁用和 onTouchListener 来尝试并重新启用。
我已经设法使用 TOUCHESBEGAN 方法在 iOS 上进行这项工作,该方法捕获用户的触摸,启用 UITextView,使用 DELETEBACKWARD 函数删除最后一个字符,并更新计数。有人可以研究我的代码并为我指明 Android 的正确方向吗?
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;
}
});
【问题讨论】:
标签: android android-edittext counter