我有一个问题,这个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="****"
/>
我可以输入我想要的字符数。
这是一个对话框,我无法通过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"
如果您遇到同样的问题,请尝试删除此行。
答案 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) });