Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


EditText en ListView oculto por el teclado cuando se enfoca

Tengo un ListView que contiene filas con EditText.

Cuando hago clic en un EditText y ya no está enfocado, recibe el foco, aparece el teclado y el EditText se mueve sobre CandidateView (comportamiento deseado).

  • Android 4.3: Cómo conectarse a varios dispositivos Bluetooth Low Energy
  • No se puede crear Android 4.0 AVD con barra de sistema
  • Uso de ProgressDialog android personalizado
  • Actividad con servicio duradero en el fondo que no se matará
  • Error al usar proguard con Android Facebook sdk 3.0
  • Android Fragment se da un contenedor null en onCreateView ()
  • Sin embargo, cuando hago una pulsación de tecla, el EditText mantiene el foco y recibe la entrada, pero se mueve hacia abajo y se oscurece por el teclado (el movimiento anterior se invierte).

    Cuando hago clic en EditText cuando ya está seleccionado sin el teclado mostrado, el teclado aparece pero el EditText no se mueve a la posición correcta (por encima de CandidateView). Aún recibe la entrada.

    Agregar una vista de cabecera que contiene EditText y allí todo funciona correctamente.

    Este es el código de mi ArrayAdapter donde se crea la vista de fila:

    View view = inflater.inflate(R.layout.row_profile_entry_text, null); final String question = getItem(position); TextView textViewQuestion = (TextView) view.findViewById(R.id.rpeq_TextViewQuestion); textViewQuestion.setText(question); final EditText editTextAnswer = (EditText) view.findViewById(R.id.rpeq_EditTextAnswer); editTextAnswer.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { mAnswers.put(question, s.toString()); } }); if (mAnswers.containsKey(question)) { editTextAnswer.setText(mAnswers.get(question)); } return view; 

    También quisiera hacer hincapié en que ya he añadido
    android:windowSoftInputMode="adjustPan" para el Manifiesto y
    android:descendantFocusability="beforeDescendants" al ListView como la mayoría de las respuestas a otras preguntas sugieren.

    Sin adjustPan el EditText no es capaz de recibir el enfoque en absoluto, pero no resuelve el problema por completo.

    ¿Alguien tiene una idea de lo que estoy haciendo mal?

  • Algunos widgets de terceros dejan de actualizarse después de la actualización de la aplicación
  • Anulación de Android ArrayAdapter
  • Filtrado de ListView con un adaptador personalizado (objeto)
  • Error java.lang.RuntimeException: Stub! En Android con pruebas de Fitnesse
  • WebView Android "tel:" enlaces muestran página web no encontrada
  • Android: Acceso a string.xml utilizando el nombre de la variable
  • 2 Solutions collect form web for “EditText en ListView oculto por el teclado cuando se enfoca”

    Prueba esto:

     <activity name="YourActivity" android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"> </activity> 

    En el archivo de manifiesto.

    Muy probablemente, adjustResize debe funcionar, si está utilizando un ScrollView .

    Después de muchas horas gastado en este problema esta es mi solución (para Android <4.2):

    1) Manifest => android: windowSoftInputMode = "adjustPan"

    2) Actividad => crear OnTouchListner y pasar a Adapter

      private OnTouchListener exampleOnTouchListener = new OnTouchListener() { @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEvent.ACTION_UP == event.getAction()) { int position = (Integer) v.getTag(); myListView.setSelection(position); } return false; } }; 

    3) Adaptador

      if (exampleOnTouchListener!= null) { myEditText.setTag(position); myEditText.setOnTouchListener(exampleOnTouchListener); // if last element set padding bottom for spacing if (position == items.size() - 1) { LinearLayout myLinearLayout = (LinearLayout) convertView .findViewById(R.id.ticketcontolProposedRealvalueLinearLayout); myLinearLayout.setPadding(0, 0, 0,SET_PADDING_BOTTOM); } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.