Подтвердить что ты не робот

Принуждение adjustPan в активности, содержащей ScrollView

Мой макет выглядит следующим образом:

<RelativeLayout>
    <RelativeLayout>
    </RelativeLayout>
    <ViewFlipper>
        <ScrollView>
            <LinearLayout>
                <EditText />
            </LinearLayout>
        </ScrollView>
    </ViewFlipper>
    <RelativeLayout>
    </RelativeLayout>
</RelativeLayout>

Когда вы фокусируетесь на EditText посередине, мягкая клавиатура появляется, как ожидалось, но всегда меняет размер макета, хотя в манифесте есть android:windowSoftInputMode="adjustPan".

Проблема с изменением размера заключается в том, что только ScrollView сжимается, оставляя RelativeLayouts выше и ниже его неповрежденным, что может почти полностью затенять EditText.

Я попытался скрыть RelativeLayouts, когда клавиатура показана (это еще одна печальная история), но adjustPan звучит более подходящим. Однако это не влияет на эту активность.

Как заставить ForcePan работать, несмотря на наличие ScrollView?

Update:

SO не позволит мне ответить на мой собственный вопрос, но решение устанавливает android:isScrollContainer="false" в ScrollView.

4b9b3361

Ответ 1

Хороший вопрос, в основном разработчики делают то же самое, но это не совсем правильно, как вам нужно. Это поможет вам.

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">


<ViewFlipper>
    <ScrollView
      android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
        <LinearLayout
          android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical"
        >
            <EditText />
        </LinearLayout>
    </ScrollView>
</ViewFlipper>
<LinearLayout> 

Вы должны взять LinearLayout с ориентацией как вертикальный или горизонтальный вид, где у вас никогда не возникала проблема настройки. Это очень просто.

Ответ 2

попробуйте в своем манифесте тег активности:

android:windowSoftInputMode="stateVisible|adjustPan"