在我的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);
答案 0 :(得分:7)
您可以尝试此代码
首先,你在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);
}
}
}
});
我设计的如果没有焦点,所以在这里你可以写最小长度条件和最大长度条件
答案 1 :(得分:7)
或者您只需将代码更改为
即可value.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus) {
if (value.getText().toString().trim() **try using value.getText().length()<3**
.length() < 3) { **instead of the value.getText().trim().length()**
value.setError("Failed");
} else {
value.setError(null);
}}}});
答案 2 :(得分: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
答案 3 :(得分:0)
这是一个EditText和一个Button:
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
}
}
});
答案 4 :(得分:0)
您可以扩展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);
}
}