android - 文本输入 EditText 数字不起作用?仅显示“abcxyz”之类的字符,并且还需要避免在edittext(TextInputLayout)中使用数字和符号
问题描述
<android.support.design.widget.TextInputEditText
android:id="@+id/value_text_input_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:gravity="right"
android:saveEnabled="false"
android:textColor="@android:color/black"
android:textColorHint="@android:color/black"
android:textCursorDrawable="@null"
android:inputType="text"
android:textSize="14sp"
android:digits="abcdefghijklmnopqrstuvwxyz"
app:colorAccent="@android:color/black"
app:font="@font/proxima_nova_semibold" />
我已经尝试过XML
布局,pragmatically
但它也无法使用其允许的数字和符号:
valueTextInputEditText.setInputType(InputType.TYPE_CLASS_TEXT);
valueTextInputEditText.setKeyListener(DigitsKeyListener.getInstance("abcdefghijklmnopqrstuvwxyz"));
我已经尝试过EditText
它的工作正常,但正在我的项目中使用,TextInputLayout
所以我需要TextInputLayout
功能所以需要帮助
解决方案
您可以将过滤器设置为您的TextInputEditText
. 试试下面的代码
public class InputFilterCharacter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if(isCharacter(source.toString()))
{
return source.toString();
}
return "";
}
private boolean isCharacter(String s) {
return s.matches(".*[a-zA-Z]+.*");
}
}
并设置你的过滤器
TextInputEditText et = findViewById(R.id.value_text_input_edittext);
et.setFilters(new InputFilter[]{new InputFilterCharacter()});
推荐阅读
- java - 尝试连接 websocket 时使用“SockJS+spring websocket”的 Websockets 错误(404:STOMP 端点的路径未找到)
- azure-policy - AuditIfExists 的 Azure 策略效果
- azure - 服务原则分配给谁?ACR 还是 App 服务?
- oracle-sqldeveloper - SQL Developer Data Modeller 中的注释与 RDBMS 注释
- javascript - Angular 10 --proxy.conf 没有将请求重定向到目标
- spring - 在 MongoDB 中搜索,条件是每个属性只能得到一个结果,最高版本
- android - 从后台恢复时如何重新启动 nativescript 应用程序?
- r - 直接从 FRED 网站提取数据以在 R 中创建数据框
- google-cloud-platform - 加载操作中的 GCP Bigquery 错误:缺少字节
- java - java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64: 来自使用 Maven 导入的库 jar