日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Android中EditText的輸入字數(shù)限制

 杰出天下 2013-01-18
在開發(fā)應(yīng)用的時候,經(jīng)常會限制用戶輸入的字數(shù),比如發(fā)表評論或者其它什么的,下面來個簡單的demo

  EditText et_content;//定義一個文本輸入框<br>TextView tv_num;// 用來顯示剩余字數(shù)<br>int num = 10;//限制的最大字數(shù) <br>

  et_content = (EditText) findViewById(R.id.et_content);<br>tv_num = (TextView) findViewById(R.id.tv_num); <br>tv_num.setText("10");<br>

  下面為EditText文本框添加監(jiān)聽

  et_content.addTextChangedListener(new TextWatcher() {
              private CharSequence temp;
              private int selectionStart;
              private int selectionEnd;

              @Override
              public void onTextChanged(CharSequence s, int start, int before,
                      int count) {
                  temp = s;
                  System.out.println("s="+s);
              }

              @Override
              public void beforeTextChanged(CharSequence s, int start, int count,
                      int after) {
              }

              @Override
              public void afterTextChanged(Editable s) {
                  int number = num - s.length();
                  tv_num.setText("" + number);
                  selectionStart = et_content.getSelectionStart();
                  selectionEnd = et_content.getSelectionEnd();
                  //System.out.println("start="+selectionStart+",end="+selectionEnd);
                  if (temp.length() > num) {
                      s.delete(selectionStart - 1, selectionEnd);
                      int tempSelection = selectionStart;
                      et_content.setText(s);
                      et_content.setSelection(tempSelection);//設(shè)置光標在最后
                  }
              }
          });

  這樣就可以實現(xiàn)了。

二.方法二:
利用EditText可以設(shè)置filter的特性,自定義一個LengthFilter,當(dāng)輸入字數(shù)超過限制時,做出自定義的提示
// 輸入框限制輸入字數(shù)
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX) {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source.length() > 0 && dest.length() == Constant.TEXT_MAX) {
if ((System.currentTimeMillis() - toastTime) > interval) {
toastTime = System.currentTimeMillis();
Toast
.makeText(KaguHomeActivity.this,
R.string.edit_content_limit,
Toast.LENGTH_SHORT).show();
}
}
if (dest.toString().equals(
getResources().getString(R.string.input_default_txt))) {
Bundle data = new Bundle();
data.putCharSequence("source", source);
Message message = textHandler.obtainMessage();
message.setData(data);
message.sendToTarget();
}

return super.filter(source, start, end, dest, dstart, dend);
}
};
editText.setFilters(filters);
private Handler textHandler = new Handler() {
@Override
public void handleMessage(Message msg) {

Bundle data = msg.getData();
CharSequence source = data.getCharSequence("source");
editText.setTextColor(Color.BLACK);
editText.setText(source);
editText.setSelection(source.length());
}
};

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多