gpt4 book ai didi

Android "android:inputType"覆盖 "android:digits"如果你在 "android:digits"之后设置它(错误?)

转载 作者:太空狗 更新时间:2023-10-29 13:53:58 26 4
gpt4 key购买 nike

如果我执行以下操作:

et_user_input.setKeyListener(DigitsKeyListener.getInstance("123-+"));
et_user_input.setInputType((EditorInfo.TYPE_TEXT_VARIATION_NORMAL));

设置 inputType second 会覆盖我指定的数字。这非常令人头疼,因为我使用的是自定义复合 View ,而且我无法根据属性控制 switch case 触发的顺序。

这是我的一小段代码:

public ValidationEditText(Context context, AttributeSet attrs) {
super(context, attrs);

TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ValidationEditText);
int count = typedArray.getIndexCount();

for (int i = 0; i < count; i++) {
int attr = typedArray.getIndex(i);

switch (attr) {
case R.styleable.ValidationEditText_android_inputType:
LogUtil.a(getClass(), "Here1");
et_user_input.setInputType(typedArray.getInt(attr, EditorInfo.TYPE_TEXT_VARIATION_NORMAL));
break;

case R.styleable.ValidationEditText_android_digits:
LogUtil.a(getClass(), "Here2");
et_user_input.setKeyListener(DigitsKeyListener.getInstance(typedArray.getString(attr)));
break;
}

}
}

“Here2”总是先触发,然后在 switch case 中触发“Here1”。

这种“压倒一切”的效果是 Android 的预期行为还是实际上是一个错误?

最佳答案

找到解决方案,问题出在 DigitsKeyListener 扩展 NumberKeyListener 的地方,它返回数字 inputType。所以解决方案是

public class CustomDigitsKeyListener extends NumberKeyListener {

private char[] mAccepted;

public CustomDigitsKeyListener(char[] mAccepted) {
this.mAccepted = mAccepted;
}

public CustomDigitsKeyListener() {
}

public static CustomDigitsKeyListener getInstance(String accepted){
CustomDigitsKeyListener cust = new CustomDigitsKeyListener();
cust.mAccepted = new char[accepted.length()];
accepted.getChars(0, accepted.length(), cust.mAccepted, 0);
return cust;
}

@Override
protected char[] getAcceptedChars() {
return mAccepted;
}

@Override
public int getInputType() {
return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
}
}

关于Android "android:inputType"覆盖 "android:digits"如果你在 "android:digits"之后设置它(错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761793/

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