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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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