我搜索了与我的问题类似的每个问题,但没有得到解决.我的问题是这样的:
I searched every question similar to my problem but didn't get it working. My problem is this:
我想在输入时格式化 EditText
中的字符串.格式如下(始终是 19 位数字):
I want to format a string in EditText
while typing. The format is this (it's always a 19 digit number):
012345 01 0123456789 0
如您所见,我想在用户输入时添加空格.我知道我必须使用 TextWatcher
但我所做的一切都没有得到我想要的.
As you can see I want to add spaces when they are needed while the user is typing. I know that I have to use the TextWatcher
but everything I do I don't get what i want.
编辑:
这是我上次尝试的代码:
Here is the code of my last try:
@Override
public void afterTextChanged(Editable s) {
if(s.length() == 7 || s.length() == 10 || s.length() == 21){
editText.removeTextChangedListener(this);
String newValue;
newValue= s.insert((s.length()-1), " ").toString();
//Log.d("AFTER",newValue);
editText.setText(newValue);
editText.setSelection(newValue.length());
editText.addTextChangedListener(this);
}
}
给你.
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="0123456789"
android:inputType="number" />
</LinearLayout>
MainActivity.java:
public class MainActivity extends Activity {
int textlength = 0;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after)
{
}
public void onTextChanged(CharSequence s, int start,
int before, int count)
{
String text = editText.getText().toString();
textlength = editText.getText().length();
if(text.endsWith(" "))
return;
if(textlength == 7 || textlength == 10 || textlength == 21)
{
editText.setText(new StringBuilder(text).insert(text.length()-1, " ").toString());
editText.setSelection(editText.getText().length());
}
}});
}
}
通过这种方式,我只是设法在特定间隔的数字之间添加空格.
In this way, I have just managed to add spaces between the digits at particular intervals.
注意:我在edittext中添加了额外的功能,这样就只能输入数字,同时默认只会弹出数字键盘.有关用户输入类型的更多信息,this 可能会对你有所帮助.
Note: I have added extra features to the edittext, so that only numbers can be entered and at the same time the number keyboard only pops up by default. For more on the way for the type of user inputs, this might help you.
这篇关于EditText 自定义字符串格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!