我的情况是需要在应用程序中输入一些数值。
案例:
如果用户输入整数,则最大长度应为 8 位数字。例如:12345678
如果用户想输入小数,最多只能输入 2 位小数。 例如:1.03、123.95
如果用户输入整8位数字,那么他还可以输入小数点后最多2位小数。例如:12345678.12
因此我们有以下有效输入:
1. 12345678
2. 123.45
3. 12345678.98
如何实现上述案例场景?
最佳答案
给你。这正是您想要的...
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
public class EditTextLogic extends Activity
{
EditText mEditText;
String TEMP="",INPUT="";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_tesxt_logic);
mEditText =(EditText) findViewById(R.id.textView1);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}
@Override
public void afterTextChanged(Editable Token)
{
if(Token.toString().length()<INPUT.length())
{
INPUT=Token.toString();
}
}
});
mEditText.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence input, int arg1,
int arg2, Spanned arg3, int arg4, int arg5)
{
CharSequence returned = validate(input.toString());
return returned;
}
}
});
}
private CharSequence validate(String Token) {
Log.i("Token",""+Token);
TEMP = INPUT;
TEMP += Token;
if(TEMP.contains("."))
{
try
{
String FractionNo = TEMP.split("\\.")[1];
if(FractionNo.length()> 2)
{
return "";
}
else
{
INPUT = TEMP;
return Token;
}
}
catch(ArrayIndexOutOfBoundsException e)
{
INPUT = TEMP;
return Token;
}
}
else
{
if(TEMP.length()>8)
{
return "";
}
else
{
INPUT = TEMP;
return Token;
}
}
}
}
这是您的 XML:
<EditText
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:singleLine="true"/>
干杯! 享受编码的乐趣!!
关于android - 在 Android 中添加输入约束来编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825012/