我在我的应用程序中使用了EditText字段。
EditText用于输入ddns输入:
e.g www.example.com/xxxx
我想在“/”字符后将ddns id的长度限制为30个字符。
即在“/”字符后面,后面的内容必须是最多30个字符
我想动态地执行此操作并限制用户不要输入超过30个字符。
我该怎么做。
答案 0 :(得分:0)
您可以尝试以下方式限制用户输入少于30个字符。
tf.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//processing part
}
});
答案 1 :(得分:0)
一个非常快速和丑陋的答案看起来像这样:
yourEditText.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) {
if(s.toString().contains('/') {
if(s.toString().split('/')[1].length() == 30) {
//By only working with the EditText:
InputMethodManager imm = (InputMethodManager)
getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
yourEditText.setFocusable(false);
yoruEditText.setEnabled(false);
}
}
}
@Override
public void afterTextChanged(Editable s) {
}});
//What i think is the best implementation, adding a TextView sitting on top of
//EditText with visibility set to GONE
yourEditText.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) {
if(s.toString().contains('/') {
if(s.toString().split('/')[1].length() == 30) {
//By working with EditText and a TextView
yourEditText.setVisibility(View.GONE);
yourTextView.setVisibility(View.VISIBLE);
yourTextView.setText(s);
}
}
}
@Override
public void afterTextChanged(Editable s) {
}});
在任何情况下,您都希望将textWatcher添加到editText并相应地进行更改。