2012-08-09 14 views
5

głównym zajęciem mojego Android app wygląda tak:WindowSoftInputMode i Scrollview

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:orientation="vertical" > 

    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/ScrollView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true" 
     android:orientation="vertical" 
     android:paddingLeft="60dp" 
     android:paddingTop="53dp" > 

     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/RelativeLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/billAmountText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/billAmount_string" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/billAmount" 
       android:layout_width="173dp" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/billAmountText" 
       android:layout_marginTop="3dp" 
       android:inputType="numberDecimal" /> 
     </RelativeLayout> 
    </ScrollView> 

</RelativeLayout> 

Aby upewnić się, że obraz tła (zdefiniowana w pierwszym RelativeLayout) nie zostanie wyciśnięty gdy klawiatura wyskakuje, mam ustawione android:windowSoftInputMode="stateVisible|adjustPan w pliku manifestu dla mojej aktywności. Wszystko dobrze z tłem i układem teraz, nic się nie zmienia.

Ale problem polega na tym, że mój ScrollView nie działa teraz, ponieważ sądzę, że system uważa, że ​​okno nie wymaga zmiany rozmiaru z powodu mojej powyższej modyfikacji do manifestu - więc ScrollView nie jest aktywny. Dzieje się odwrotnie, gdy wyjmuję android:windowSoftInputMode="stateVisible|adjustPan, przewijanie działa, ale tło zostaje ściśnięte, gdy klawiatura wyskoczy.

Czy istnieje sposób, aby go zakodować, aby moje tło nie zostało ściśnięte, a mój ScrollView nadal działa? Dzięki!

Odpowiedz

3

spróbować użyć w swojej działalności właściwość windowSoftInputMode z następującymi wartościami:

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

Nie wiem, czy jest to konieczne, ale można spróbować dodać do układu za ScrollView tagu fillViewPort do true . Tak powinno wyglądać coś pokażę poniżej:

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true"> 

     <!-- Other Views --> 
</ScrollView> 

Daj mi znać o postępach.

+3

Dzięki, ale bez powodzenia. Zasadniczo chcę, aby adjustResize zastosował się do Scrollview, ale chcę, aby adjustPan zastosował się do RelativeLayout, który hostuje tło. – capcom

+0

Wpadłem na ten problem. Szkoda, że ​​nie znaleźliście rozwiązania:/ – Rawr

+0

Czytam to 4 lata później i nadal nie mogę znaleźć rozwiązania .. – vanomart

0

W swoim przewijanym widoku umieścić układ względny, dziecko 0 jest widokiem obrazu, a dziecko 1 jest twoją treścią. Użyj widoku obrazu dla obrazu tła (src) zamiast tła przewijania. Widok obrazu będzie zgodny z scaleTypes, natomiast tło layoutu nie będzie.

Powiązane problemy