gpt4 book ai didi

android - EditText 中的动态自动大写、自动更正或密码字段

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

我想以编程方式在 EditText 中启用或禁用自动大写、自动更正或密码字段(显示项目符号)。 这意味着不是来自 XML

我也想避免 TextWatcher解决方案,更多关注InputFilter或其他一些解决方案。

将 EditText 作为 Editable 进行操作允许附加 InputFilters,但是我无法让这些以编程方式工作。此外,EditText 方法如 setAllCaps在实践中对我没有任何帮助。自动更正也是如此。这是我尝试的自动更正(向您展示我所处的位置,以及我的一些思考过程):

/** SpellCheck filter for auto-correcting words. */
class SpellCheckFilter implements InputFilter {

public String word;

public SpellCheckFilter()
{
word = " ";
}

//FIXME not returning corrected word. Try adjusting start/end values,
//what range does this return?
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
word += source;
Log.i("SpellCheckFilter", "source=\"" + source + "\"; word=\"" + word + "\"");
if (source.toString().endsWith(" "))
{
word = word.replace(" ", "");
String correction = AutoText.get(word, 0, word.length()-1, view);
Log.i("TextEditor", "Corrected word=" + (correction == null ? word : correction));
word = " ";
return correction;
}
return null;
}

}

使用 InputFilter.AllCaps , 我能够得到一个几乎可以工作的自动大写方法,但是第一个字母没有自动大写。

最佳答案

    //Calling Method
setListener1(editText);
//Method
public void setListener1(final AppCompatEditText edittext) {
final TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
String input = StringStaticMethods.firstCapital(s.toString());
edittext.removeTextChangedListener(this);
edittext.setText("");
edittext.append(input);
edittext.addTextChangedListener(this);
}
};
edittext.addTextChangedListener(textWatcher);
}
public static String firstCapital(String str) {
if (str != null && !str.equals("")) {
return (str.substring(0, 1).toUpperCase() + str.substring(1, str.length()));
}
return "";
}
//Use in XML
android:inputType="textFilter|textMultiLine|textNoSuggestions"

关于android - EditText 中的动态自动大写、自动更正或密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005146/

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