Переместить макет вверх, когда отображается программная клавиатура
Я пытаюсь настроить макет, когда программная клавиатура появляется после того, как редактируемый текст получает фокус. Прямо сейчас, если у меня много текста для редактирования и появляется клавиатура, последний текст для редактирования скрыт, и я не могу прокрутить вверх.
Вот как устроен мой макет:
Шаблон:
<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>
Вид (view_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>
Я уже пробую все виды комбинацийandroid:windowSoftInputMode
(на manifest.xml и программно). Я пытался установитьandroid:isScrollContainer="false"
на представлении прокрутки, но ничего.
Я тоже пробовал этоответ, помещая GlobalLayoutListener в мое представление прокрутки, но onGlobalLayout не вызывается, когда появляется клавиатура. ИisKeyboardShown
всегда ложно.