2012-02-02 21 views
79

Ho una schermata di accesso con due EditTexts e un pulsante di accesso nel mio layout. Il problema è che, quando inizio a digitare, viene visualizzata la tastiera virtuale e copre il pulsante di accesso. Come posso spingere il layout sopra o sopra la tastiera quando appare?Come spostare il layout quando viene visualizzata la tastiera virtuale android

Non voglio usare un ScrollView, voglio solo implementarlo senza scorrere verso il basso. Per favore, suggeriscimi un modo per farlo. Grazie in anticipo.

risposta

10

io in qualche modo raggiunto questo conoscendo lo stato della tastiera virtuale sul dispositivo. Sposto il layout nella posizione y quando viene mostrata la tastiera e ritorna alla sua posizione originale quando non viene mostrato. questo funziona bene, seguite le linee guida from https://stackoverflow.com/a/4737265/1063861

+2

Sono in grado di spostare il layout quando la tastiera mostra, ma non riesco a muovermi nella sua posizione originale mentre la tastiera nasconde, posso aiutarmi in questo. – Kishore

28

Prova questo nel file manifest Android corrispondente all'attività.

<activity android:windowSoftInputMode="adjustPan"> </activity> 
+0

il mio loyout si sposta verso l'alto la prima volta, ma quando si chiude la tastiera e si riapre, non si muove. – nabeghe

61
proprietà

Set Modalità finestra SoftInput a adjustPan e adjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity> 
+14

lo sto già facendo ma non c'è ancora nessun cambiamento – cavallo

+28

Questo non ha funzionato immediatamente, ma cambiandolo in '' ha funzionato. – nickiaconis

+1

È necessario il relativo layout per funzionare – AndroSco

0

Fare uso di disposizione relativa che consente di regolare la visualizzazione in modo che si può vedere quella vista durante la digitazione del testo

+1

controlla il mio layout Ho aggiunto il codice – cavallo

23

utilizzare questo codice in onCreate() metodo:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
+0

Questo ha funzionato per me, grazie - ho provato in xml, ma credo che debba forzarlo con il codice – Veeru

+1

Grazie, questo mi ha aiutato. non ha funzionato per me per qualche motivo. – DH28

+0

Questo metodo, ma usa "SOFT_INPUT_ADJUST_RESIZE' invece di ADJUST_PAN, ha funzionato per me – Voy

2

Accoding a questo guide, il modo corretto per raggiungere questo obiettivo è dichiarando nel vostro manifesto:

<activity name="EditContactActivity" 
     android:windowSoftInputMode="stateVisible|adjustResize"> 

    </activity> 
+0

Sembra che lo stato di condizione lo farà aprire all'avvio dell'attività, quindi non è necessario in realtà spingere la tastiera verso l'alto. – CodyEngel

0

Funziona come un fascino per me

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
12

Mettere questa linea in attività di tempo dichiarazione manifest.xml

<android:windowSoftInputMode="adjustPan"> 
3

Questo è tutto ciò che è necessario:

<activity android:windowSoftInputMode="adjustResize"> </activity> 
6

mettere questo nella vostra dichiarazione di attività nel file manifesto

o se vuoi che tu possa aggiungere il metodo onCreate() della tua attività

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
+0

L'unico che ha funzionato per me immediatamente. – kiwicomb123

+0

Il codice manifest è errato, in questo modo il comportamento non è definito (si impostano due valori di conflitto, vedere offdoc: https://developer.android.com/guide/topics/manifest/activity-element.html, 'descrizione android: windowSoftInputMode') . @ kiwicomb123, scegli un parametro o il sistema sceglierà per te (e questa scelta può cambiare su un altro dispositivo/verifica API) – kpower

14

solo

android:windowSoftInputMode="adjustResize" 

nel tag attività all'interno del file manifesto farà il trucco

+0

Grazie! Questo è ciò che ha funzionato per me. Le risposte sopra questo non l'hanno fatto. :) – Woppi

2

Quando appare il SoftKeyboard, cambia la dimensione del layout di principale, e che cosa dovete fare è di fare un listener per quel mainlayout e all'interno di quel listener, aggiungere il codice scrollT0(x,y) per scorrere verso l'alto.

0

dovresti usare "android: windowSoftInputMode =" adjustPan | stateHidden "nel tuo file Android Mainfest.xml dove stai dichiarando la sua attività.Questo regolerà i contenuti del tuo layout, quando la tastiera mostra nel layout.

2

Se si sta lavorando con xamarin, è possibile inserire questo codice WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize nell'attributo di attività della classe MainActivity. Per esempio, ora l'attributo di attività sarà simile sotto

[Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)] 
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity 
    { 
     //some code here. 
    } 
6
android:fitsSystemWindows="true" 

aggiungere proprietà su di layout principale del file di layout e

android:windowSoftInputMode="adjustResize" 

linea aggiuntivo nel file Manifest.xml sul ACTIVITA

il suo lavoro perfetto per me.

+0

fitsSystemWindows non ha nulla a che fare con la tastiera –

Problemi correlati