我想限制除了数字之外的所有符号的EditText中的输入,“?”和“*”。我怎么能这样做?
答案 0 :(得分:0)
您可以通过TextWatch
添加addTextChangedListener
。 afterTextChanged
允许您在修改后修改文本。
(请记住,有很多方法可以修改文本字段 - 输入文本,通过IME自动完成,复制和粘贴)。在TextWatch中正确处理它们。
答案 1 :(得分:0)
您可以使用此方法:
box-shadow: inset 0 5px 0.5px 0.5px #000,
inset 0 -5px 0.5px 0.5px #000,
inset 5px 0.5px 0.5px #000;
然后在beforeTextChanged方法中阻止插入“?”和“*”数字。
答案 2 :(得分:0)
如果你的字符串也有最大严格长度,你可以使用掩码。我不确定它是否是正确的解决方案,但它是最简单的解决方案。在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,它只能包含&#34;?&#34;和&#34; *&#34;最大长度为10.随意提出您的问题: - )
答案 3 :(得分:0)
这样,我们可以限制用户不输入?和*
<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"/>
答案 4 :(得分:0)
您可以通过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
答案 5 :(得分:0)
public class MainActivity extends Activity {
private EditText editText;
private String blockCharacterSet = "?*";
private InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source != null && !blockCharacterSet.contains(("" + source))) {
return "";
}
return null;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editText.setFilters(new InputFilter[] { filter });
}
}
答案 6 :(得分:-1)
尝试一下
在此代码中,您可以输入0到9位数字,并且只能输入两个特殊字符?和*。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/first_name"
android:digits="?*1234567890"
android:singleLine="true"
/>