Páginas

28 de fevereiro de 2019

Configurar o Atributo MaxLength Programaticamente no Android

No Android os atributos utilizados no arquivo xml do layout podem ser programados também no código através de métodos. No caso do atributo android:maxLength a programação via código não é tão direta como para os outros atributos. 
Para demonstrar como configurar o número máximo de texto em um widget EditText criei um arquivo de layout xml com dois campos EditText. No primeiro campo editMax1 foi configurado número máximo de texto como 10 (Listagem 1).
Listagem 1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    <EditText
        android:id="@+id/editMax1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxLength="10"
    />
    
    <EditText
        android:id="@+id/editMax2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />
</LinearLayout>

Para o segundo campo editMax2 vamos configurar o comprimento máximo do texto programaticamente (Listagem 2).
Listagem 2
public class Main extends Activity {
    private static final int MAX_LENGTH = 10;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        EditText edit2 = (EditText)findViewById(R.id.editMax2);
        
        // Define o número máximo de caracteres do campo 
        // em 10 caracteres programaticamente
        edit2.setFilters(new InputFilter[]
             {new InputFilter.LengthFilter(MAX_LENGTH)});
        
    }
}

No método onCreate(Bundle) foi criada a variável edit2 que representa o segundo campo editMax2 do arquivo xml de layout.
Para configurar o número máximo de texto foi utilizado o método setFilters(InputFilter).
Portanto os dois campos EditText estão limitados em no máximo 10 caracteres, o primeiro via arquivo xml e configuração de atributo e o segundo programaticamente. Executando a aplicação teremos os dois campos exatamente com o mesmo comportamento.