terça-feira, 17 de maio de 2016

Debug #8 - Android: teclado sobre o EditText



Fala galera!

Não sei se já comentei aqui no site, mas estou estudando desenvolvimento de aplicativos Android e confesso a vocês, é uma área sensacional. Vale muito se envolver com essa área de desenvolvimento.

Bom, e como todo iniciante (noob ainda rsrsrs) me deparei com um probleminha que custei para descobrir qual a possível solução, pelo menos a que atendeu ao que esperava.


Gostaria de já deixar claro que é aconselhável utilizar o Android Studio, pois é uma IDE completa para este fim e o Google não dá mais suporte para o Android Eclipse Tools (veja aqui).

A ideia é a seguinte, utilizo o Eclipse Mars para desenvolvimento de aplicativos e tenho uma activity chamada activity_main.xml, é uma tela simples com dois campos de texto (EditText) e um label (TextView) para cada (código abaixo).

<LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" android:scrollbarstyle="insideInset" xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView android:layout_gravity="center" android:layout_height="wrap_content" android:layout_margin="20dp" android:layout_width="wrap_content" android:text="@string/lbl_nova_tarefa">
                  
        <TextView android:id="@+id/lblTitulo" android:layout_ name="code"height="wrap_content" android:layout_margin="10dp" android:layout_width="match_parent" android:text="@string/lbl_titulo">

        <EditText android:id="@+id/edtTitulo" android:inputtype="text" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_width="match_parent" android:typeface="serif">
        
        <TextView android:id="@+id/lblDesc" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_width="match_parent" android:text="@string/lbl_descricao">
     
        <EditText android:id="@+id/edtDesc" android:inputType="textMultiLine" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_width="match_parent" android:scrollbars="vertical">         
</EditText></TextView></EditText></TextView></TextView></LinearLayout>


Pois bem, quando acessava o segundo EditText (@id/edtDesc), o teclado do android ficava sobre o campo, com isso, não era possível visualizar o que era digitado.

Ao acessar o developer.android.com, encontrei o atributo android:windowSoftInputMode. Este atributo, conforme descrito no site, afeta duas coisas:

  • O estado do teclado virtual - se ele está escondido ou visível - quando a atividade torna-se o foco da atenção do usuário.
  • O ajuste feito para a janela principal da atividade - se é redimensionada menores para dar espaço para o teclado virtual ou se o seu conteúdo deslocar para fazer o foco atual visível quando parte da janela é coberto pelo teclado virtual.
Então, para que pudesse solucionar meu problema, utilizei o valor "adjustPan", onde é responsável por redimensionar a janela da activity principal, deslocando o teclado para que o foco atual não seja escondida pelo usuário.
Dessa forma, basta somente adicionar o seguinte código ao seu arquivo AndroidManifest.xml:

android:windowSoftInputMode="adjustPan"

Bom galera, espero que tenham curtido essa dica. Ressalto que o plugin do android para Eclipse não está mais recebendo suporte, pois o Google agora possui uma IDE voltada somente para desenvolvimento Android, o Android Studio. Vale a pena dar uma olhada nessa IDE, possui muitas ferramentas que auxiliam no desenvolvimento do seu aplicativo.
Falarei disso em um próximo post.

Até mais!

;) 
Renan Rodrigues Ramos Desenvolvedor

Sou desenvolvedor, amo desenvolvimento de software, músico e apaixonado por filmes e seriados.