EditTextの文字数を動的にカウントする


Twitterに投稿するときにEditText内の文字数をカウントしたいときの備忘録

private EditText et;
private TextView tv;

public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.twitter);
	tv = (TextView) findViewById(R.id.TwitterTextCount);
	et = (EditText) findViewById(R.id.TwitterText);
	et.addTextChangedListener(new TextWatcher(){
		@Override
		public void onTextChanged(CharSequence s, int start, int before, int count){
			if(tv != null){
				final int textColor;
				int length = 140- s.length();
				if(length < 0){
					textColor = Color.RED;
				}else{
					textColor = Color.GRAY;
				}
				tv.setTextColor(textColor);
				tv.setText(String.valueOf(length));
			}
		}
		@Override
		public void afterTextChanged(Editable s) {
		}
		@Override
		public void beforeTextChanged(CharSequence s, int start, int count, int after) {
		}
	});
}

EditTextクラスのaddTextChangedListenerを使う

今回は140文字を超えるとTextViewで表示している数字を赤くした

yagi