Android: com moure les vistes per sobre del teclat en obrir-lo (solució ràpida i segura)

Foto de Rohit Tandon a Unsplash

Pas 1:

Heu de modelar el fitxer .xml així:

................ vistes ..................... ... visualitzacions que aniran per sobre del teclat ...

Com podeu veure, tenim els components següents:

  • Disposició d’arrel: ConstraintLayout (pot ser RelativeLayout)
  • Nen: NestedScrollView (pot ser simple ScrollView)
  • NiditzatScrollView Child: ConstraintLayout (pot ser RelativeLayout)
  • Disposició inferior: LinearLayout (pot ser RelativeLayout / ConstraintLayout)

És important posar en codi les línies destacades del codi anterior. Els atributs següents són més exactament:

A NestedScrollView:

Android: isScrollContainer = aplicació "veritable": layout_constraintBottom_toTopOf = "@ + id / bottomContainer"

En LinearLayout:

app: layout_constraintBottom_toBottomOf = aplicació "pare": layout_constraintRight_toRightOf = "pare"

ATENCIÓ: Funciona només si heu inclòs el component NestedScrollView / ScrollView.

Pas 2 (primera opció):

Si esteu en un fragment, poseu aquesta línia de codi al vostre mètode onCreate ():

getActivity (). getWindow (). setSoftInputMode (WindowManager.LayoutParam s.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Si esteu fent una activitat, poseu aquesta línia de codi al vostre mètode onCreate ():

getWindow (). setSoftInputMode (WindowManager.LayoutParam s.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Pas 2 (segona opció):

Escriviu a AndroidManifest.xml la següent línia del component d'activitat:

PRECAUCIÓ: les vostres visualitzacions aniran per sobre del teclat només si s'inclouen en una disposició principal.

Espero que us ajudi,

feliç codificació :)