我有一个关于如何限制android中edit text
中字符数的小技巧。例如,我想为名称字段设置一个限制说10个字符,因此它不允许用户输入超过10个字符。
另外,我在为文本指定inputtype
时还有另一个问题,我知道android:inputType="text|textPersonName"
的过程但它不起作用,因为它允许用户输入字符,数字和特殊字符。
我将非常感谢你的帮助。
提前致谢
答案 0 :(得分:9)
使用以下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" />
这里,这只允许使用小写字母,空格和点(。)
<强> Upate 强>
按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});
答案 1 :(得分:3)
android:maxLength="10"
这对我有用。
答案 2 :(得分:1)
试试这个:
android:maxLength="10"
在XML文件的EditText中。
答案 3 :(得分:1)
对于第一部分,你要做的是写:
android:maxLength="10"
就你的第二个问题而言,只写textPersonName就足够了
android:inputType="textPersonName"
在此引用input type
只有在programaticaly执行时才必须使用位标志,这对应于:
setInputType(InputType.TYPE_CLASS_TEXT | InputType. TYPE_TEXT_VARIATION_PERSON_NAME);
答案 4 :(得分: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});
代码取自here。
答案 5 :(得分:1)
只有7,8,9位数字在Android工作中的手机号码第一个字符开始
源代码
https://drive.google.com/open?id=0BzBKpZ4nzNzUQkU3S25fcXV4cEE
第一个字母以7,8,9开头的Android中的编辑文字
开头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">
答案 6 :(得分:0)
在xml中的简单方法:
如果您需要在编辑文本中设置4个字符,请使用此
android:maxLength="4"