Android: персонажи оставили обратный отсчет в EditText

У меня есть этот EditText с лимитом в 150 символов:

<EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" android:layout_marginBottom="50dp" android:padding="30dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:maxLength="150" android:gravity="top|left" android:lineSpacingMultiplier="1.8" android:inputType="textMultiLine|textCapSentences" > </EditText> 

TextView:

 <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="100dp" /> 

NewActivity:

 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.EditText; import android.widget.ImageButton; import android.widget.TextView; public class NewActivity extends Activity { private TextView textView1; private EditText editText1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.new_text); final ImageButton a = (ImageButton) findViewById(R.id.imageBack); a.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Animation anim = AnimationUtils.loadAnimation(NewActivity.this, R.anim.animation); a.startAnimation(anim); Intent intent = new Intent(NewActivity.this,MainActivity.class); startActivity(intent); editText1.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int aft) { } @Override public void afterTextChanged(Editable s) { // this will show characters remaining textView1.setText(150 - s.toString().length() + "/150"); } }); } }); }} 

Я хочу создать небольшой прямоугольник в правом верхнем углу страницы, где вы можете увидеть, сколько осталось символов, например 132/150, я попытался найти другие решения здесь, в stackoverflow, но я не мог заставить их работать.

Вы можете сделать это

 mEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int aft { } @Override public void afterTextChanged(Editable s) { // this will show characters remaining countTextView.setText(150 - s.toString().length() + "/150"); } }); 

Вы можете использовать TextWatcher, чтобы увидеть, когда текст изменился

 private TextView mTextView; private EditText mEditText; private final TextWatcher mTextEditorWatcher = new TextWatcher() { public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { //This sets a textview to the current length mTextView.setText(String.valueOf(s.length())); } public void afterTextChanged(Editable s) { } }; 

Вы можете установить TextWatcher для edittext с помощью

 mEditText.addTextChangedListener(mTextEditorWatcher); 

Программно сделайте это как ..

 editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { int length = s.length(); // set this length/maxlength to the textview at the top left // corner textView.setText(""+length/max);//which is placed at the top roght corner } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); 
  1. Храните TextWatcher и отслеживайте длину введенного текста.
  2. Сделайте MAX_LENGTH – yourTextwatcherString.length;
  3. Продолжайте обновлять представление в верхней части RHS на основе таймера / или даже при нажатии на клавишу, ваше желание (есть несколько способов сделать это). Проверьте, не изменилась ли старая длина и новая длина до обновления вида.