gpt4 book ai didi

android - 将文本格式编辑为美国电话号码 1(xxx)-xxxx 您在 android 中键入?

转载 作者:行者123 更新时间:2023-11-29 16:12:59 26 4
gpt4 key购买 nike

我一直在努力寻找将电话号码格式化为用户类型的简单解决方案。我不想使用任何库进行格式化。关于如何做的任何想法?

最佳答案

似乎您需要将 TextChangedListener 添加到您的编辑中并准备在那里进行处理。这是在开头插入 +7 的小例子(实际上,for - 在中间逻辑保持不变,只需要另一个字符串操作):

/** Helper to control input phone number */
static class PrefixEntryWatcher implements TextWatcher {
/** flag to avoid re-enter in {@link PhoneEntryWatcher#afterTextChanged(Editable)}*/
private boolean isInAfterTextChanged = false;
/** Prefix to insert */
private final String prefix;
/** Prefix to insert length */
private final int prefixLength;
/** Weak reference to parent text edit */
private final WeakReference<EditText> parentEdit;

/**
* Default constructor
*
* @param prefix to be used for prefix
*/
PrefixEntryWatcher(final String prefix, final EditText parentEdit) {
this.prefix = prefix;
this.prefixLength = (prefix == null ? 0 : prefix.length());
this.parentEdit = new WeakReference<EditText>(parentEdit);
}

@Override
public synchronized void afterTextChanged(final Editable text) {
if (!this.isInAfterTextChanged) {
this.isInAfterTextChanged = true;

if (text.length() <= this.prefixLength) {
text.clear();
text.insert(0, this.prefix);

final EditText parent = this.parentEdit.get();

if (null != parent) {
parent.setSelection(this.prefixLength);
}
}
else {
if (!this.prefix.equals(text
.subSequence(0, this.prefixLength).toString())) {
text.clear();
text.insert(0, this.prefix);
}

final String withoutSpaces
= text.toString().replaceAll(" ", "");

text.clear();
text.insert(0, withoutSpaces);
}

// now delete all spaces
this.isInAfterTextChanged = false;
}
}

@Override
public void beforeTextChanged(final CharSequence s,
final int start,
final int count,
final int after) {
// nothing to do here
}

@Override
public void onTextChanged(final CharSequence s,
final int start,
final int before,
final int count) {
// nothing to do here
}
}

它没有太多代码和逻辑,所以似乎不需要第三方库来处理这种类型的 EditText。

关于android - 将文本格式编辑为美国电话号码 1(xxx)-xxxx 您在 android 中键入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com