2013-03-23 10 views
5

Wiem, jak ograniczyć rozmiar za pomocą XML (Android: maxLength), ale dynamicznie tworzę okno dialogowe z ostrzeżeniem w kodzie. Czy jest coś podobnego, czego mogę użyć? (Wolisz też kompatybilne API 10)Jak ograniczyć liczbę znaków wprowadzonych w oknie dialogowym alertu EditText

Używam okna dialogowego alertu, aby wyświetlić użytkownikowi monit o wyświetlenie wartości tekstowej później.

public void onClickPosition(View v) { 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle(R.string.title_Position); 
    alert.setMessage(R.string.message_Position); 

    final EditText input = new EditText(this); 
    input.setText(_currentClass.getPosition()); 
    alert.setView(input); 

    alert.setPositiveButton(R.string.option_Okay, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     _currentClass.setPosition(input.getText().toString()); 
     TextView textView = (TextView)findViewById(R.id.textPosition); 
     textView.setText(_currentClass.getPosition()); 
     } 
    }); 

Odpowiedz

5

spróbować czegoś takiego:

InputFilter[] FilterArray = new InputFilter[1]; 
FilterArray[0] = new InputFilter.LengthFilter(MAX_LENGTH); 
input.setFilters(FilterArray); 
+0

Wow, to było łatwe i działa świetnie! Dzięki! – RiddlerDev

+0

Nie ma za co. @ MH.'s jest taki sam, tylko w jednej linii! – ElefantPhace

10

Można ustawić maxLength odpowiednik w kodzie za pomocą InputFilter. Załóżmy, że chcesz tego EditText przyjąć maksymalnie 20 znaków:

input.setFilters(new InputFilter[] { new InputFilter.LengthFilter(20) }); 

Od setFilters() akceptuje tablicę filtrów, można dodać więcej niż jeden. Na przykład, jeśli potrzebujesz większej kontroli nad dozwolonym typem znaków, możesz zaimplementować własny filtr i przekazać go z tablicą.