我有一个Dialog Fragment,允许用户指定一些文本和文本的位置。
我想限制用户输入大于字符上限的文字。 我可以限制最大字符输入吗?否则,我可以在此代码中包含检查以确保文本小于LIMIT? 这是代码:
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final CharSequence[] items = {"Above", "Below"};
capPos = Position.ABOVE;
final EditText input = new EditText(getActivity());
input.setInputType(EditorInfo.TYPE_CLASS_TEXT);
input.setHint("Add caption here");
builder.setView(input);
builder.setTitle(R.string.dialog_caption)
.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
text = input.getText().toString();
mListener.onDialogPositiveClick(CaptionFragment.this);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onDialogNegativeClick(CaptionFragment.this);
}
})
.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id){
if ("Above".compareTo(items[id].toString()) == 0){
capPos = Caption.Position.ABOVE ;
Log.i("CaptionFragment", "Above");
}else if ("Below".compareTo(items[id].toString()) == 0){
capPos = Caption.Position.BELOW;
Log.i("CaptionFragment", "Below");
}
}
});
// Create the AlertDialog object and return it
return builder.create();
}
答案 0 :(得分:2)
所以它是EditText
。您可以使用attiribute android:maxLength
来限制此处显示的字符数https://stackoverflow.com/a/3285421/655987
另一种选择是让用户输入他/她想要的任何内容,然后进行检查背景。
您可以在OnClickListener
内执行此操作。如果您只想在用户点击肯定按钮时检查该值(通常是这种情况),那么您应该按如下方式进行检查:
...
.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
text = input.getText().toString();
if(text.equals("ads")) //For example
...
}
})
...
此外,您最初可以将肯定按钮的onClickListener
设置为 null 然后覆盖它,如下所示https://stackoverflow.com/a/7636468/655987
由你决定。
答案 1 :(得分:1)
试试这个,
final EditText input = new EditText(getActivity());
input.setInputType(EditorInfo.TYPE_CLASS_TEXT);
input.setFilters(new InputFilter[] {
new InputFilter.LengthFilter(LIMIT) });
input.setHint("Add caption here");
builder.setView(input);