2011-05-24 13 views
12

Mój układ wygląda następująco:Zmuszanie adjustPan aktywności zawierającego Scrollview

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

Gdy koncentruje się na EditText w środku, miękka klawiatura wyskakuje jak oczekiwano, to jednak zawsze zmienia rozmiar układ chociaż mam android:windowSoftInputMode="adjustPan" w manifeście.

Problem ze zmianą rozmiaru polega na tym, że tylko ScrollView kurczy się, pozostawiając RelativeLayouts powyżej i poniżej nienaruszonego, co może prawie całkowicie zasłonić EditText.

Próbowałem ukryć RelativeLayouts, gdy wyświetlana jest klawiatura (to kolejna smutna historia), ale właściwość adjustPan jest bardziej odpowiednia. Jednak nie ma to wpływu na tę aktywność.

Jak wymusić adjustPan na pracę pomimo obecności ScrollView?

Aktualizacja:

SO nie pozwoli mi odpowiedzieć na moje własne pytanie, ale rozwiązanie jest ustawienie android:isScrollContainer="false" na Scrollview.

+0

To zaoszczędziło mi mnóstwo czasu. Dzięki wielkie! –

Odpowiedz

-1

spróbować tego w swoim manifeście jest tag działalność:

android:windowSoftInputMode="stateVisible|adjustPan" 
+5

Zgodnie z dokumentacją Androida nie powinieneś używać razem znacznika adjustResize i adjustPan. Powinien to być jeden lub drugi. – Rise

0

Dobre pytanie głównie Deweloperzy zrobić to samo, ale nie jest to poprawny sposób masz zrobić. To ci pomoże.

<?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> 

Należy wziąć LinearLayout z orientacją jak pionowe lub widoku poziomym, gdzie masz nigdy problemem regulacja created.this jest bardzo prosta.

Powiązane problemy