J'ai une <ScrollView>
mise en page:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/input_one"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_two"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_three"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<Button
android:id="@+id/ok_btn"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="@string/ok_str" />
</LinearLayout>
</ScrollView>
Comme vous le voyez ci-dessus, la mise en page simple se compose de trois champs de saisie et d'un bouton "Ok".
Je lance mon application avec la mise en page ci-dessus, lorsque je tape sur le 1er champ de saisie ( @+id/input_one
), le clavier virtuel apparaîtra du bas de l'écran, il masque le 3ème champ de saisie et le bouton "Ok".
Depuis que je l'utilise <ScrollView>
, je pensais pouvoir faire défiler la page vers le haut afin de voir le 3ème champ de saisie et le bouton "Ok" qui sont cachés par le clavier logiciel , mais la page ne peut pas faire défiler . Pourquoi? Comment s'en débarrasser? en gros, je voudrais voir tous les champs de saisie et le bouton "Ok", même le clavier logiciel est apparu.
Réponses:
Je fixe le problème en définissant l'attribut suivant dans
<activity>
des AndroidManifest.xmlla source
Ok, j'ai cherché plusieurs heures maintenant pour trouver le problème, et je l'ai trouvé.
Aucun des changements ne m'a plu
fillViewport="true"
ou neandroid:windowSoftInputMode="adjustResize"
m'a aidé.J'utilise Android 4.4 et c'est la grosse erreur :
D'une manière ou d'une autre, les thèmes Plein écran empêchent les ScrollViews de défiler lorsque le SoftKeyboard est visible.
Pour le moment, j'ai fini par utiliser ceci à la place:
Je ne sais pas comment me débarrasser de la barre système supérieure avec affichage de l'heure et de la batterie, mais au moins j'ai eu le problème.
J'espère que cela aidera les autres qui ont le même problème.
EDIT: J'ai une petite solution de contournement pour mon cas, alors je l'ai posté ici :
Je ne sais pas si cela fonctionnera pour vous, mais cela vous aidera certainement à comprendre et à clarifier certaines choses.
EDIT2: Voici un autre bon sujet qui vous aidera à aller dans la bonne direction ou même à résoudre votre problème.
la source
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Pour moi, la seule chose qui fonctionne est de mettre dans l'activité dans le manifeste cet attribut:
Pour ne pas afficher le clavier lors de l'ouverture de l'activité et ne pas chevaucher le bas de la vue.
la source
mettez ceci dans votre manifeste comme ceci en mode Pas de plein écran
dans ton manifeste
la source
ScrollView
, mais unRelativeLayout
qui contient unLinearLayout
qui contient alors unScrollView
Dans votre propriété de
Manifest
définitionwindowSoftInputMode
:la source
Regarde ça.
la source
Cela n'a fonctionné que pour moi:
la source
Aussi, si vous souhaitez le faire par programme, ajoutez simplement la ligne ci-dessous au onCreate de l'activité.
la source
Vous pouvez essayer d'utiliser le code suivant pour résoudre votre problème:
la source
Eh bien, la réponse la plus simple que j'ai essayée est simplement de supprimer votre code, ce qui fait passer l'activité en plein écran.J'avais un code comme celui-ci qui était responsable de faire passer mon activité en plein écran:
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {
Je viens de supprimer mon code et cela fonctionne parfaitement bien si vous voulez y parvenir avec votre plein écran, vous devrez essayer d'autres méthodes
la source