EditText 输入字数限制

Editext 输入字数显示工具类

标签: Android

[1].[代码] [Java]代码 跳至 [1]

?


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

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

public

class

InputLengthControler {

    private

EditText mEditText;

    private

TextView mHintTextView;

    private

final

String hint_remain_count =
"您还可以输入%s字";

    private

final

String hint_max_length_msg =
"最多只能输入%s字";

    private

int

MAX_LENGTH =
140;

    public

void

config(EditText inputBox,
int

maxLength, TextView lengthHintView) {

        MAX_LENGTH
= maxLength;

        mEditText
= inputBox;

        mHintTextView
= lengthHintView;

        mEditText.addTextChangedListener(watcher);

        updateLengthHint(MAX_LENGTH);

    }

    private

TextWatcher watcher =
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

after) {

        }

        @Override

        public

void

afterTextChanged(Editable s) {

            if

(mEditText.getText().length() > MAX_LENGTH) {

                String
str = mEditText.getText().toString();

                if

(str !=
null

&& str.length() >
10)
{

                    str
= str.substring(
0,
MAX_LENGTH);

                    mEditText.setText(str);

                    mEditText.setSelection(str.length());

                }

                toast(String.format(hint_max_length_msg,
MAX_LENGTH));

            }

            int

enableCount = MAX_LENGTH;

            Editable
curContent = mEditText.getText();

            if

(curContent !=
null

&& curContent.length() >
0)
{

                enableCount
= MAX_LENGTH - curContent.length();

            }

            updateLengthHint(enableCount);

        }

    };

    private

void

updateLengthHint(
int

enableCount) {

        if

(enableCount <
0)
{

            enableCount
=
0;

        }
else

if

(enableCount > MAX_LENGTH) {

            enableCount
= MAX_LENGTH;

        }

        mHintTextView.setText(String.format(hint_remain_count,
enableCount));

    }

    private

void

toast(String msg) {

        Context
context;

        if

(msg !=
null

&& (context = getContext()) !=
null)
{

            Toast.makeText(context,
msg, Toast.LENGTH_SHORT).show();

        }

    }

    private

Context getContext() {

        if

(mEditText !=
null)
{

            return

mEditText.getContext();

        }

        return

null
;

    }

}

////////////////////////////////////////////////////////////////////////////////////

        InputLengthControler
ilc =
new

InputLengthControler();

        EditText
inputBox = (EditText) findViewById(R.id.xx);

        final

int

maxLength =
140;

        TextView
lengthHintView = (TextView) findViewById(R.id.xxxxx);

        ilc.config(inputBox,
maxLength, lengthHintView);

时间: 2024-08-14 01:30:05

EditText 输入字数限制的相关文章

Android EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多,不同语言在不同编码中占据字节数等,不同语言在U8等编码的表示范围等,这一整块知识很丰富, 自己暂时没有理的特别顺,稍后整理再说吧. 第二点,目前主流app的处理方案也各有不同,qq5.0以前的版本,发表说说貌似是没有字数限制的(我试了一个350字左右的照样发), 5.0以后限制了,这样如果用户

Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)

转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然同意用户输入 第一点,涉及的东东事实上蛮多,不同语言在不同编码中占领字节数等,不同语言在U8等编码的表示范围等,这一整块知识非常丰富,自己临时没有理的特别顺.稍后整理再说吧. 第二点.眼下主流app的处理方案也

Android实现限制EditText输入文字的数量

一: 声明控件. TextView hasnumTV; TextView hasnum;// 用来显示剩余字数 int num = 50;// 限制的最大字数 二: 主要的方法: hasnumTV = (TextView) findViewById(R.id.tv_num); hasnumTV.setText("限" + num + "" + "字以内"); editText.addTextChangedListener(new TextWatc

Android---3种方式限制EditView输入字数(转载)

方法一:利用TextWatcher Java代码   editText.addTextChangedListener(new TextWatcher() { private CharSequence temp; private boolean isEdit = true; private int selectionStart ; private int selectionEnd ; @Override public void beforeTextChanged(CharSequence s, i

Android-------ListView列表中获取EditText输入的值

最近项目的购物车中用列表中包含了留言功能, 需要获取EditText输入的内容,当购买多件商品时,就有点棘手了. 经过查资料解决了这个功能,并写了一个案例: 效果图: 可以在商品数据用一个字段来管理留言数据,这样就可以方便的操作了. 代码: public class MainActivity extends AppCompatActivity { ListView listView; @Override protected void onCreate(Bundle savedInstanceSt

iOS 限制输入字数完美解决方案

关于限制输入字数以前也做过,网上也很多方法. 但都不够完美,以前的测试人员也没千方百计的挑毛病,所以就糊弄过去了. 现在这个项目的测试人员为了找bug真是无所不用其极.... 1.一般方法就是通过UITextField的代理方法 #pragma mark - UITextFieldDelegate - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS

Android——Activity恢复用户用EditText输入的数据

说明: 在横屏输入的内容,在Activity销毁后,即横屏后,获取用户输入的内容 步骤: 1.在xml页面定义EditText的id 2.用onSaveInstanceState保存用户输入的数据 (1)调父类 (2)用findViewById使用id查找并获取View的实例(View所有控件的父类,再强制转换一下) (3)找到实例,获取文本内容:转为字符串 get (4)将获取到内容保存起来 put 3.用onRestoreInstanceState恢复数据 (1)先获取数据 get (2)操

用javascript实现控制一个文本框的输入字数限制,超出字数限制文本框飘红显示-面试题

用javascript实现控制一个文本框的输入字数限制,超出字数限制文本框飘红显示. html <textarea name="" id="text" cols="30" rows="10" maxLength=10></textarea><br> <span id="span"></span> javascript var str = docum

android 之EditText输入检测

最近开发一个功能的时候发生一个故事,其情节如下: 功能其实不复杂,其中需要一个EditText来获取用户输入的信息.于是,我做了一个Dialog来显示我的输入界面(代码如下): mAlertDialog = new AlertDialog.Builder(this)//, android.R.style.Theme_Holo_Light .setIcon(R.drawable.ic_dialog_info_light) .setTitle(R.string.model_rename_device