2013-06-08 2 views
8

Recentemente ho affrontato questo problema e voglio condividere con voi la mia soluzione.EditText in ListView ha perso lo stato

Problema:

  • Hai un ListView con una modifica di testo per ogni riga in questo modo:

MainList.xml

<ListView 
    android:id="@+id/listViewServ" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"/> 

RowList.xml

<TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:inputType="number"/> 
  • Si sta lavorando con le schede: tabHost o TabActivity. (questo è molto importante da notare).
  • Quando si fa clic su una voce di elenco EditText, lo stato attivo si sposta immediatamente e non è possibile digitare nulla. Tuttavia la tastiera è ancora accesa. Ma ciò che scrivi non appare come l'attenzione è persa.

Ora, ho intenzione di darvi la mia soluzione postando la mia domanda.

risposta

30

ho visto che alcune soluzioni utilizzano:

android:descendantFocusability="beforeDescendants" 

nel layout della definizione della lista.

Per me questo non era necessario. Il problema è stato risolto con android: windowSoftInputMode = "adjustPan":

<activity 
     android:name="mainActivity" 
     android:windowSoftInputMode="adjustPan" 
     android:label="@string/app_name" > 
    </activity> 

nel Manifest.xml.

Ma è necessario assicurarsi che questa riga di codice vada nell'attività in cui si sta definendo TabHost o TabActivity !!!.

+12

Se si dispone di un 'EditText' nella parte inferiore dello schermo, ciò causerà l'oscuramento della tastiera anche quando si tenta di inserire del testo. – blahdiblah

+0

Questo funziona per me, su Android 4.2 con ROM cyanogenmod, dove altre soluzioni falliscono. ;) ben fatto, amico! – marino

+0

questa soluzione non funziona per me ... qualcosa di più? –