努力尽今夕,少年犹可夸。这篇文章主要讲述Android中EditText的掩码相关的知识,希望能为你提供帮助。
我想限制除了数字之外的所有符号的EditText中的输入,“?”和“*”。我怎么能这样做?
答案你可以通过TextWatch
添加一个addTextChangedListener
。 afterTextChanged
允许您在修改后修改文本。
(请记住,有很多方法可以修改文本字段 - 输入文本,通过IME自动完成,复制和粘贴)。在TextWatch中正确处理这些。
另一答案您可以使用此方法:
EditText editText = new EditText(this);
editText.addTextChangedListener(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) {}
});
然后在beforeTextChanged方法中防止插入“?”和“*”数字。
另一答案【Android中EditText的掩码】如果你的字符串也有最大严格长度,你可以使用掩码。我不确定这是正确的解决方案,但它是最简单的解决方案。在android Studio的Android程序中使用蒙版的一种简单方法是使用MaskedEditText库(GitHub link)。
我无法理解什么意思:数字,“?”和“”,所以我想只是“?”和“”。所以代码是:
在build.gradle中:
compile 'ru.egslava:MaskedEditText:1.0.5'
在你的布局中:
<
br.com.sapereaude.maskedEditText.MaskedEditText
android:id="@+id/phone_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:typeface="monospace"
mask:allowed_chars="?*"
mask:mask="##########"
app:keep_hint="true"
/>
此代码创建一个只能包含“?”的EditText。和“*”和最大长度是10.随意问你的问题:-)
另一答案这样,我们可以限制用户不输入?和*
<
EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/register_text_size"
android:layout_weight="1"
android:id="@+id/first_name"
android:padding="14dp"
android:digits="@#$%^&
()_-+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12"
android:singleLine="true"
android:hint="@string/first_name"/>
另一答案你可以从
edittext.addTextChangeListener
方法检查你的输入。etAdjustmentInput.addTextChangedListener(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) {
//checking the length of input
if (etAdjustmentInput.getText().toString().trim().length()<
=0){
// if length less then or equals 0 show warning or make button not clickable
tvAdjustmentInfoOk.setClickable(false);
tvAdjustmentInfoOk.setTextColor(getResources().getColor(R.color.time_color));
}
else {// input length greater then 0 now check the input type according to your requirement
tvAdjustmentInfoOk.setClickable(true);
tvAdjustmentInfoOk.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
if(s.equals("?")){
//do your task
}
else{ // whatever you want to tell the user
}
}
}@Override
public void afterTextChanged(Editable s) {}
});
在
onTextChanged
方法内你可以限制用户maximum length
,你也可以根据你的要求检查input type
推荐阅读
- 如何在运行时检查Android中Edittext / TextView的textallcaps是true / false()
- 多行中的Edittext与Android中的actionDone问题[重复]
- xamarin android c#Edittext自动滚动到底部
- 停止setText()在EditText上显示Android软键盘[复制]
- Xamarin.Android EditText事件未在设备上触发
- Android Soft Keyboard在重新打开时隐藏EditText
- 将EditText数组转换为字符串数组 - Kotlin Android
- EditText中的标点符号 - Android Nougat
- 如何在WinForms中使用C#启动,停止和验证服务是否存在