Android — O que eu aprendi esta semana #2

Mateus Gondim
Aug 27, 2017 · 2 min read

1. Restringir dígitos em um EditText

Não conhecia o atributo android:digits. Usando ele, é possível restringir os caracteres que podem ser digitados em um EditText. No caso em questão, só deveriam ser aceitos letras(sem acentos), números e espaços. Desta forma, adicionei a linha abaixo à declaração do EditText:

android:digits="0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz "

O usuário ainda pode visualizar outros caracteres no teclado, no entanto nada acontece ao clicar em algum deles.

2. Manter espaços no strings.xml

Após descobrir como restringir caracteres em um EditText, precisei replicar essa solução em outros campos, então movi a string com os caracteres válidos para o strings.xml:

O efeito imediato foi que os espaços pararam de funcionar. Isso acontece porque o Android naturalmente dá um trim(remove espaços no começo e fim) das strings no arquivo strings.xml. Para manter o espaço lá, é preciso substituí-lo pelo código \u0020 :

Encontrei a solução aqui.

3. Layouts para telas maiores

Essa semana mexi pela primeira vez com pastas de layout do tipo sw<N>dp. Estas pastas contém layouts que são utilizados em telas que disponham de uma largura mínima de N(em unidade de dps). Geralmente são utilizadas para tablets, como neste caso.

O problema em questão é que, ao rodar o aplicativo no tablet, os layouts carregados eram os da pasta padrão, e não os desta pasta especial. Depois de um pouco de investigação, percebemos que o nome da pasta estava incorreto: layout-sw721dp. A ideia era que esses layouts fossem utilizados para telas com largura maior que 720 pixels, porém a largura mínima precisa ser considerada em unidades de dp. Como o tablet se enquadrava na categoria HDPI, a largura mínima de 721 dp equivalia a 1082 pixels(721 x 1.5). O dispositivo não dispunha desta largura no entanto, por isso os layouts não eram carregados. A solução foi renomear a pasta para layout-sw600dp.

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade