2012-08-30 10 views
9

Używam przewijania wewnątrz względnego układu.Jak wyświetlić układ przewijania nad klawiaturą?

Mogę być w stanie przewinąć do końca strony we wszystkich telefonach komórkowych, gdy bez klawiatury, w niektórych telefonach komórkowych mógłbym wyświetlić widok przewijania całkowicie, gdy klawiatura jest włączona. ie) - koniec przewijania nad klawiaturą.

Problem, który analizuję, dotyczy różnych rodzajów urządzeń z Androidem.

Dostałem kilka odpowiedzi, aby dodać windowSoftInputMode w manifeście aktywności.

dodał również: android:windowSoftInputMode="stateHidden|adjustResize"

Ale wciąż otrzymuję ten sam problem. Jeśli masz rozwiązanie lub masz do czynienia z problemem, podziel się swoimi pomysłami. Dziękuję za Twój czas.

+0

Byłoby bardzo pomocne, gdyby można było przeformułować pytanie i jasno określić swój problem. Jakie jest dokładne zachowanie, którego nie chcesz? Czy chcesz, aby przewijanie nie było zasłaniane przez klawiaturę i przesuwać się w górę, gdy pojawi się klawiatura? –

+0

Musisz zamieścić swój kod XML oraz układ. – MKJParekh

+0

@DanielSmith yes. Właśnie tego potrzebuję, co mówisz. – arnp

Odpowiedz

3

Natknąłem się na to pytanie, szukając podobnego problemu. android:windowSoftInputMode="adjustResize" działa czasami, a nie innym razem. Dlaczego nie?

Ta odpowiedź dotyczy tematu pełnoekranowego w systemie Android. Honeycomb (3.1) adjustResize no longer working?

Dla mnie problemem było to wezwanie tutaj: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Ustawienie flagi na pełnym ekranie by uniemożliwić prawidłowe przewijanie kiedy pojawiła się klawiatura.

+0

tak, zbyt rozwiązany wcześniej.) Problem był w pełnym ekranie. – arnp

1

Spróbuj kod w onCreate:

getWindow().setSoftInputMode(
      WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
+0

brak zmiany przez dodanie tego – arnp

+0

spróbuj usunąć „Android: windowSoftInputMode =”. StateHidden | adjustResize”, a następnie dodać powyższy kod w onCreate –

+0

Nie koleś pracuje – arnp

0

konfigurację można umieścić na dowolnej aktywności w AdroidManifest.xml, tak jak ...

<activity android:name=".views.ViewportActivity" 
        **android:windowSoftInputMode="adjustPan|adjustResize"** 
        android:label="@string/app_name" 
        android:configChanges="locale" 
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 
+0

już jestem przy użyciu tego – arnp

+0

To co mam używać i to działa dla mnie – IamStalker

1

Te inne odpowiedzi powinno być rozwiązanie problemu, więc, gdy waham się zaproponować następujące rozwiązanie, wyrzucę je tam, na wypadek gdybyś był zmuszony poświęcić czas/nie robić projektu, w którym jest to niezwykle ważne: użyj OnGlobalLayoutListener.

Naprawdę nie ma żadnego sposobu, aby wiedzieć, czy SoftKeyboard został podniesiony (niestety), ale można to zrobić, dostosowując układ, tak aby klawiatura znajdowała się poniżej ekranu przewijania (np. Zmieniając wysokość na aktualną wysokość - wysokość klawiatury).

Istnieje an answer here, który wyjaśni, jak to zrobić bardzo dobrze. Ponownie, nie jestem do końca jasny na temat twojego problemu, ponieważ nie widzieliśmy kodu, itp. I to jest trudne do zdiagnozowania, dlaczego inne odpowiedzi nie rozwiązują problemu ... ale jeśli naprawdę utknąłeś - daj to spróbuj :)