2017-10-05 5 views
0

j'ai un basculement mise en page comme ceci:alignParentBottom avec une visibilité

<CoordinatorLayout> 
    <RelativeLayout id="parent"> 
     <LinearLayout id="child1" 
         layout_above="+id/child2"/> 
     <LinearLayout id="child2" 
         gravity="bottom" 
         alignParentBottom="true" 
         visibility="gone"/> 
    <FloatingActionButton/> 
</CoordinatorLayout> 

La mise en page child2 (qui est GONE par défaut) a un EditText et un Button en elle, alignées verticalement. Sur certaines actions, je veux child2 être sur le dessus du clavier lorsque l'accent est mis sur le EditText. Lorsque cette action se produit, je bascule la visibilité de child2 à VISIBLE mais le problème est que seul le EditText est visible lorsque le clavier est en place et non le Button en dessous.

Lorsque je supprime visibility=GONE de la présentation, cela fonctionne correctement. L'ensemble child2 est ancré au clavier comme prévu mais quand je le fais GONE par défaut et le rend visible sur mon action, seul le EditText est visible au-dessus du clavier et toute la vue n'est pas ancrée au clavier. J'ai également essayé adjustResize dans le Activity mais cela n'a pas fonctionné aussi bien. Des idées, qu'est-ce qui me manque?

+0

Je vois une balise de fin pour le bouton d'action flottante mais où est l'étiquette de début? – chornge

+0

@chornge l'ID FAB déclaré dans ses balises. Je ne pensais pas que c'était pertinent à la question, par conséquent je l'ai laissé de côté. – Nerd

Répondre

0

Je réalise que mon activité mettait l'FLAG_FULLSCREEN en raison de laquelle elle a ignoré la valeur de windowSoftInputMode comme indiqué dans le docs:

drapeau de fenêtre: cacher toutes les décorations d'écran (comme la barre d'état) tout cette fenêtre est affichée. Cela permet à la fenêtre d'utiliser l'espace d'affichage entier pour lui-même - la barre d'état sera masquée lorsque une fenêtre d'application avec cet ensemble d'indicateurs est sur la couche supérieure. Une fenêtre plein écran ignore une valeur de SOFT_INPUT_ADJUST_RESIZE pour le champ softInputMode de la fenêtre ; la fenêtre restera en plein écran et ne sera pas redimensionnée.

Un moment plutôt embarrassant! (facepalm)