Mover o layout para cima quando o teclado virtual for exibido
Estou tentando ajustar o layout quando o teclado virtual aparece depois que um texto de edição fica em foco. No momento, se houver muitos textos para edição e o teclado aparecer, o último texto ficará oculto e não será possível rolar para cima.
É assim que meu layout é construído:
Modelo:
<LinearLayout>
<LinearLayout>
// header 1
</LinearLayout>
<LinearLayout>
// header 1
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="vertical">
// where I inflate view_1
</LinearLayout>
<LinearLayout>
// footer
</LinearLayout>
</LinearLayout>
Visualização (visualização_1):
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<LinearLayout>
// ...
</LinearLayout>
<LinearLayout>
// ...
</LinearLayout>
<LinearLayout>
<TextView/>
<EditText/>
<TextView/>
<EditText/>
<TextView/>
<EditText/>
<TextView/>
<EditText/>
</LinearLayout>
</LinearLayout>
</ScrollView>
Eu já tentei todos os tipos de combinações deandroid:windowSoftInputMode
(no manifest.xml e programaticamente). Eu tentei definirandroid:isScrollContainer="false"
na exibição de rolagem, mas nada.
Eu também tentei issoresponda, colocando um GlobalLayoutListener na minha exibição de rolagem, mas o onGlobalLayout não é chamado quando o teclado aparece. E aisKeyboardShown
é sempre falso.