J'ai rencontré des problèmes lors de l'utilisation de AdjustPan
dans mon application, car il ne fonctionne pas comme il est censé le faire. Certains autres utilisateurs ont également rencontré ce problème, donc je pense qu'il est important de partager ce problème ( La mise en page ne monte pas suffisamment lorsque vous cliquez sur Modifier le texte ).
Remarque: j'utilise Android Studio et j'utilise une "application instantanée", donc l'emplacement des fichiers sera un peu différent.
Lorsque j'utilise AdjustPan
dans ma mise en page, mon activité ne monte pas suffisamment au point où le EditText
apparaît au-dessus du clavier virtuel (voir l'image pour Détails). Le même résultat apparaît toujours, que vous l'utilisiez dans un fichier Manifest ou un fichier Java.
Non seulement cela, mais la partie la plus étrange est que la barre d'état devient transparente et la barre bleu foncé qui est censée aller derrière les icônes de notification descend vers le bas strong > un peu (voir l'image pour plus de détails).
J'ai essayé plusieurs tentatives pour résoudre ce problème, comme en utilisant AdjustResize
et setOnTouchListener
mais ces deux réponses que j'ai reçues n'ont pas résolu ce problème.
Je n'arrive toujours pas à comprendre la cause de ce problème, donc toute réponse ou tout commentaire sur la façon de découvrir pourquoi ce problème se produit est également très bien.
Voici une partie de mon code:
Fichier manifeste:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Input_Activity"> <EditText android:layout_width="214dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:inputType="number|numberDecimal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.585" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.725" />
Fichier Java:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.WindowManager; public class Input_Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_input__activity); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); } }
Fichier XML:
<activity android:name=".Input_Activity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" />
Tous les commentaires seraient appréciés.
4 Réponses :
Vous devez également ajouter le code suivant dans votre événement onTouch afin que lorsque le clavier virtuel apparaît, il augmente. Exemple:
editText.setTransformationMethod(WordBreakUtil.getInstance()); editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); return false; } });
Android Studio (Mon IDE) déclare que: "Il ne peut pas résoudre le symbole WordBreakUtil
"
créer un objet comme InputMethodManager methodManager au niveau de la classe.
ajoutez ces lignes à votre méthode onCreate ()
,
methodManager.toggleSoftInputFromWindow( your_view_name.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
et dans votre méthode onClick (), affichez le clavier comme,
methodManager = (InputMethodManager) this.getSystemService(this.INPUT_METHOD_SERVICE); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Je suis un peu nouveau dans Android Studio, ce qui est censé continuer: your_view_name
Même si ce n'est pas AdjustPan
, cela fonctionne toujours dans l'ensemble. Ce serait formidable si vous pouviez résoudre ce problème avec AdjustPan
Je ne suis pas sûr de la réponse. mais essayez de remplacer
<activity android:name=".Input_Activity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize" />
par
<activity android:name=".Input_Activity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" />
dans votre manifeste Android. Lisez ici
J'espère que cela vous aidera!
android:windowSoftInputMode Above attribute can be used to specify what happens with activity contents.Below image can clear your doubts more adjustPan: The activityâs main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window. adjustResize: The activityâs main window is always resized to make room for the soft keyboard on screen. I think there is no need add below code which you have added.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);