[Android] EditTextの入力文字数を動的にカウント表示する方法

Twitterライクな入力文字数カウント表示の実装

Androidアプリで、Twitterライクに入力文字数のカウント表示をしたい時の実装メモです。

入力文字数のカウント表示&指定文字数オーバー時に文字色を赤くする

以下のコードで、テキスト入力文字数のカウント表示と、指定文字数オーバー時に文字色を赤くすることができます。

		private EditText editText;
		private TextView textCount;
		editText = ((EditText)findViewById(R.id.editText));
		textCount = ((TextView)findViewById(R.id.textCount));

		editText.addTextChangedListener(new TextWatcher(){
	        @Override
	        public void onTextChanged(CharSequence s, int start, int before, int count){
                int textColor = Color.GRAY;

				// 入力文字数の表示
	        	int txtLength = s.length();
	        	textCount.setText(Integer.toString(txtLength) + "/30");

				// 指定文字数オーバーで文字色を赤くする
	        	if (txtLength > 30) {
	        		textColor = Color.RED;
	        	}
	            textCount.setTextColor(textColor);
	        }
	        @Override
	        public void afterTextChanged(Editable s) {
	        }
	        @Override
	        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
	        }
	    });

onTextChangedでテキスト入力時のイベントを取得し、入力文字数を表示しています。

実装イメージ

実装イメージは以下のような感じになります。

2014-01-02 16.45.29

EditTextの脇に入力文字数カウンターを表示。

2014-01-02 16.47.21

テキスト入力するとリアルタイムに入力文字数がカウント表示されます。

2014-01-02 16.47.49

指定文字数をオーバーすると文字色が赤くなります。

プロの力が身につく Androidプログラミングの教科書