13

W mojej aplikacji mam ListView ze stopką zawierającą niestandardowy widok z wnętrzem EditText. U góry znajduje się pasek akcji. Aktywność obecnie korzysta z trybu SOFT_INPUT_ADJUST_RESIZE (adjustResize) w trybie miękkiego wprowadzania i nie zamyka klawiatury podczas przewijania.Czy zawsze można wyświetlić pasek akcji podczas korzystania z funkcji adjustPan jako trybu wejścia miękkiego?

Aby wyświetlić więcej pozycji, chciałem usunąć klawiaturę podczas przewijania i uzyskać płynniejsze zachowanie przewijania, które chcę zmienić, aby używać SOFT_INPUT_ADJUST_PAN (adjustPan). Jeśli jednak zmienię na adjustPan, cały widok, w tym pasek akcji, zostanie przesunięty w górę. Chciałbym, aby widok listy był pchany, ale pasek akcji pozostaje zawsze na górze. Czy to możliwe? Jeśli nie, czy można użyć adjustResize i uzyskać płynną animację rozmiaru?

Do tej pory próbowałem:

  • Żądanie Window.FEATURE_ACTION_BAR_OVERLAY, ale to nie pomogło, chociaż dokumentacja brzmiały obiecująco.
  • Poruszanie się po kontenerze paska akcji w zależności od tego, czy klawiatura jest widoczna, czy nie, co skończyło się wyglądem jak masywnie niestabilna sztuczka, więc ją złomowałem.
  • Do tej pory wykluczyłem adjustResize ze względu na zachowanie rysunku, które dzieje się podczas przewijania, minimalizując klawiaturę i zmieniając jednocześnie rozmiar listview. Czy istnieje sposób na płynną zmianę wielkości animacji?
+0

Zrobiłeś to? Mam podobny problem – Jacky

+0

Niestety nie. – fejd

+0

@fejd Mam do czynienia z tym samym problemem. Czy możesz zaktualizować podejście zastosowane w celu rozwiązania tego problemu? – Ammar

Odpowiedz

0

dla adjustPan

umieścić poniżej kod w deklaracji linii działalności w pliku manifest.xml

android:windowSoftInputMode="adjustPan" 

jak

<activity 
     android:name="activity" 
     android:windowSoftInputMode="adjustPan" > 
</activity> 

dla remove keybord while scrall

podczas uzyskać wynik w tym czasie wykonać poniżej kod

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

w ten sposób można usunąć kawiatura od ekranu.

+0

Dzięki to działa dla mnie. –

+1

Myślę, że ta odpowiedź nie rozwiązuje problemu w pytaniu tutaj – Tony