2

我有一个关于如何限制 android 中的字符数的小技巧。edit text例如,我想为名称字段设置 10 个字符的限制,因此它不允许用户输入超过 10 个字符。

此外,我在指定inputtypefor 文本时遇到了另一个问题,我知道该过程,android:inputType="text|textPersonName"但它不起作用,因为它允许用户输入字符、数字和特殊字符。

我将非常感谢您的帮助。

提前致谢

4

7 回答 7

10

使用以下 xml 属性设置允许的最大字符和位数

android:digits
android:maxLength

例如:

<EditText
android:id="@+id/et_name"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:digits="abcdefghijklmnopqrstuvwxyz ."
android:maxLength="10" />

在这里,这仅允许小写字母、空格和点 (.)

更新

通过java设置过滤器

InputFilter myFilter = new InputFilter() { 
        public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 


                        if (!Character.isLetter(source.charAt(i))) { 
                                return ""; 
                        } 

                        if (i == start) {
                           return source.toUpperCase();
                        }

                } 
                return source; 
        } 
}; 

edit.setFilters(new InputFilter[]{myFilter}); 
于 2012-10-06T14:42:55.753 回答
3
android:maxLength="10"

这对我有用。

于 2016-10-04T12:37:16.203 回答
1

尝试这个:

android:maxLength="10"

在 XML 文件中的 EditText 中。

于 2012-10-06T13:00:21.277 回答
1

对于第一部分,您要做的是编写:

android:maxLength="10"

就你的第二个问题而言,只写 textPersonName 就足够了

android:inputType="textPersonName" 

如此处所引用的输入类型

仅在以编程方式执行时才必须使用位标志,这对应于:

 setInputType(InputType.TYPE_CLASS_TEXT  | InputType. TYPE_TEXT_VARIATION_PERSON_NAME);
于 2012-10-06T13:14:05.140 回答
1

为了设置你应该使用的字符数的限制,因为已经发布

android:maxLength="10"

在 XML 文件中的 EditText 中。如果您希望用户仅限于字母,那么您将必须在 JAVA 代码中创建一个自定义输入过滤器,如下所示

InputFilter filter = new InputFilter() { 
        public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 
                        if (!Character.isLetter(source.charAt(i))) { 
                                return ""; 
                        } 
                } 
                return null; 
        } 
}; 

edit.setFilters(new InputFilter[]{filter}); 

代码取自这里

于 2012-10-06T13:16:50.713 回答
1

android工作中的手机号码第一个字符只有7、8、9位数字

源代码

https://drive.google.com/open?id=0BzBKpZ4nzNzUQkU3S25fcXV4cEE

在 android 中编辑文本中的第一个字母以 7,8,9 开头

package com.keshav.mobilenumberrestriction_1_6_digits;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText et_mobile_feedback;
    String blockCharacterSet = "1234560";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et_mobile_feedback = (EditText) findViewById(R.id.et_mobile_feedback);

        et_mobile_feedback.setFilters(new InputFilter[] { filter });

        et_mobile_feedback.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
                // you can call or do what you want with your EditText here
            }

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

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(et_mobile_feedback.getText().toString().length()==0)
                    blockCharacterSet="1234560";
                else
                    blockCharacterSet="";
                if(et_mobile_feedback.getText().toString().length()==10)
                    blockCharacterSet="1234567890";
            }
        });
    }
    private InputFilter filter = new InputFilter() {

        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

            try {
                if (source != null && blockCharacterSet.contains("" + source.charAt(0))) {
                    return "";
                }
            }catch (StringIndexOutOfBoundsException e){

            }
            return null;
        }
    };
}

    <EditText
        android:id="@+id/et_mobile_feedback"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:editable="true"
        android:fontFamily="sans-serif"
        android:gravity="top"
        android:hint="Mobile"
        android:textColor="@color/colorPrimary"
        android:inputType="number"
        android:maxLength="10"
        android:padding="15dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="10dp"
        android:singleLine="true">
于 2017-08-12T06:24:25.993 回答
1

xml中的简单方法:

如果您需要在编辑文本中设置 4 个字符,请使用此

android:maxLength="4"
于 2017-09-05T12:48:23.313 回答