如何在EditText中设置最小文本(必填)和最大文本

15

在我的EditText字段中,我想将一些最小文本作为强制要求,并将最大文本限制为限制,有什么方法可以实现吗?

如果要输入文本,则数字计数必须减少。我该如何做到这一点?

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="24dp"
    android:maxLength="175"
    android:ems="10" />

这是我的添加activity.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_layout);
    System.out.println(PRAYER_CATEGORY.length);
    tvPrayer = (TextView) findViewById(R.id.mystate);
    spinnerPrayers = (Spinner) findViewById(R.id.spinnerstate);

    ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, PRAYER_CATEGORY);
    adapter_state
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerPrayers.setAdapter(adapter_state);

    value=(EditText)findViewById(R.id.editText1);
    value
       .setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    if (value.getText().toString().trim()
                            .length() < 3) {

                        value.setError("Failed");
                    } else {
                        value.setError(null);
                    }
                }
                else {
                    if (value.getText().toString().trim()
                            .length() < 3) {
                        value.setError("Failed");
                    } else {
                            value.setError(null);
                    }
                }
            }
        });
        btnSpeakprayer = (ImageButton) findViewById(R.id.btnSpeakprayer);
        btn=(Button)findViewById(R.id.button1);
        pb=(ProgressBar)findViewById(R.id.progressBar1);
        pb.setVisibility(View.GONE);
        btn.setOnClickListener(this);

你想让用户在EditText中输入有限的文本,比如四个字母?我说得对吗?这就是你的问题所表达的意思。 - KOTIOS
1
@Stacks28 是的,你说得对。对于我来说,在编辑文本框中至少需要一个字母,并且最大长度为175个字符,就像我想要的那样。 - Karthick M
你可以使用OnChangeListener。查看此帖子获取更多详细信息。 - mach
你不需要追踪输入的长度(例如递减或递增变量)。你可以这样做,但很可能你不需要。在某个时候,你会想要使用来自此“EditText”的值。在那时进行长度验证。 - Vikram
@mach 这是我的需求,对于我来说,在编辑文本框中至少需要一个字母,并且最大长度为175个字符,我希望能够实现这样的功能。 - Karthick M
显示剩余5条评论
5个回答

12

您可以尝试这段代码

首先,在XML文件中设置maxlength,例如:

                    <EditText
                    android:id="@+id/editText"
                    android:layout_width="match_parent"
                    android:inputType="textPassword"
                    android:lines="1"
                    android:maxLength="15"
                    android:maxLines="1"
                    android:singleLine="true" />

那么在您的代码中,您可以这样写:

et_billamt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                if (et_billamt.getText().toString().trim().length() < 5) {
                    et_billamt.setError("Failed");
                } else {
                    // your code here
                    et_billamt.setError(null);
                }
            } else {
                if (et_billamt.getText().toString().trim().length() < 5) {
                    et_billamt.setError("Failed");
                } else {
                    // your code here
                    et_billamt.setError(null);
                }
            }

        }
    });

如果没有焦点,我设计了if语句,因此您可以为最小长度条件和最大长度条件编写内容。


最小长度在哪里需要输入?对于最大长度,这是代码 android:maxLength="15",那么最小长度在哪里呢? - Karthick M
如果你的代码中有这个 et_first.getText().toString().trim().length() < 5,那么你可以在这里编写你的条件。 - sarabu
ValidationMorE 无法像这样解决,错误显示在这一行:if (!ValidationMorE.isValidEorM(et_first.getText().toString())) {。 - Karthick M
让我们[在聊天中继续这个讨论](http://chat.stackoverflow.com/rooms/33885/discussion-between-kartheek-and-karthick-m) - sarabu

9

将您的代码更改为以下内容:

与其使用value.getText().trim().length(),请尝试使用value.getText().length()<3

value.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            if (value.getText().toString().trim().length() < 3)
                value.setError("Failed");
            else
                value.setError(null);
        }
    }
});

@Milad,如果是这样的话,你可以看看我在这里发布的内容吗?我认为pastie更注重答案的版本。 - jayeshkv
是的,我知道,只是想提醒一下链接没有用,可以从答案中删除。 - Milad Faridnia

1
Try this
EditText value =(EditText) findviewbyId(R.id.urEditTextId);// this line must be oncreate

将这些行放在您想要检查的位置。
String ed1=value .getText().toString();
int size=ed1.length();

你可以匹配数字并执行相应操作。
if(size==0)
//Toast : kindly enter atleast one letter 

if(size>175)
//Toast : max length 175 char 

兄弟,在我的活动中,怎么做这个? - Karthick M
你的 EditText 叫什么名字? - KOTIOS
伙计,我们正在把简单的问题复杂化了,如果你不想采取任何行动,那就简单地写“return;”。 - KOTIOS

1
您可以扩展EditText类,并覆盖onTextChanged方法以自己监控文本长度的变化。然后您就可以控制限制。
public class CustomEditText extends EditText{

public CustomEditText(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

@Override
protected void onTextChanged(CharSequence text, int start,
        int lengthBefore, int lengthAfter) {
    // TODO Auto-generated method stub
    Log.i("length", "input text length = " + text.length());
    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}

}


0
这里有一个编辑文本框和一个按钮:
EditText myEditText;
Button button;

在你的onCreate()方法中:
myEditText = (EditText) findViewById(R.id.edittext);
button = (Button) findViewById(R.id.button);

假设您想要使用用户在myEditText中输入的值,并通过按钮提交或使用它。请为此按钮设置一个“OnClickListener”:
button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        if (mEditText.length() < 1 ||
            mEditText.length() > 175) {

               mEditText.setError("Value should be between 1 and 175 characters in length");

               mEditText.requestFocus();
        } else {

            // Value is valid (between 1 and 175 characters long)

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

            // submit
        } 
    }
});

在我的情况下,不需要按钮,维克拉姆。 - Karthick M
@KarthickM 在这种情况下,Karthick的答案应该能帮到你。 - Vikram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接