android底层中掩码的计算用法,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 Studio的Android程序中使用蒙版的一种简单方法是使用MaskedEditText库(GitHub link)。

我无法理解什么意思:数字,“?”和“”,所以我想只是“?”和“”。所以代码是:

在build.gradle中:

compile 'ru.egslava:MaskedEditText:1.0.5'

在你的布局中:

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.随意问你的问题:-)

另一答案

这样,我们可以限制用户不输入?和*

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值