Android:EditText maxLength被忽略

时间:2014-08-06 18:08:10

标签: android android-edittext

我有一个问题,这个EditText完全忽略了我的maxLength。

<EditText
        android:id="@+id/dialog_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:inputType="numberPassword"
        android:maxLength="4"
        android:singleLine="true"
        android:textColorHint="@color/primary_lighter"
        android:textColor="@color/accent_harder"
        android:hint="****"
        />

maxLength is ignored

我可以输入我想要的字符数。

这是一个对话框,我无法通过findViewById获取EditText,因为当我按OK时,它可以通过程序进行。

public void showNewQuestionDialog() {
    final AlertDialog.Builder builder = new AlertDialog.Builder( this );
    LayoutInflater inflater = this.getLayoutInflater();
    builder.setView( inflater.inflate( R.layout.dialog_question_new, null ) )
            .setPositiveButton( R.string.settings_ok, new  DialogInterface.OnClickListener() {
                @Override
                public void onClick( DialogInterface thisDialog, int id ) {
                    Dialog dialog2 = Dialog.class.cast( thisDialog );
                    EditText input = ( EditText ) dialog2.findViewById( R.id.dialog_input ); 

                    // Other code here..
                }
            } );
     .....

我解决了。 问题是这一行:

        android:singleLine="true"

如果您遇到同样的问题,请尝试删除此行。

3 个答案:

答案 0 :(得分:1)

我会确保您的XML属性不会影响另一个。

似乎这两个可能是问题

    android:maxLength="4"
    android:singleLine="true"

我看到你已经解决了!好的,问题是......

    android:singleLine="true"

但是你应该仔细检查以确保你不能创建新的一行!

答案 1 :(得分:0)

您需要删除布局中的以下行以解决此问题

android:singleLine="true"

除此之外,您可以使用下面的自定义视图动态地对EditText进行充气 你可以在输入模式下注册textwatcher。

LayoutInflator mInflator = (LayoutInflater) context.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
View view = mInflator.inflate(R.layout.dialog_question_new, null);
AlertDialog.Builder mBuilder = new AlertDialog.Builder(context, R.style.CustomDialogTheme);
EditText input = ( EditText ) view.findViewById( R.id.dialog_input_question_new); 
mBuilder.setCustomTitle(view);
mBuilder.setPositiveButton(...
mBuilder.setPositiveButton(...

答案 2 :(得分:0)

您还可以使用被低估的LengthFilter

EditText editText = findViewById(R.id.edit_text);
int length = 4;
editText.setFilters(new android.text.InputFilter[] { new android.text.InputFilter.LengthFilter(length) });