2011-04-29 7 views
6

Tengo una aplicación que utiliza un ime interno (lo que significa que el iempo es solo código dentro de la aplicación y no un verdadero ime). Yo uso este panel ime para ingresar/editar un editText. Todo funciona bien hasta Froyo (no lo he probado con Gingerbread). Sin embargo, en Honeycomb, puedo ingresar texto y editarlo, ¡pero no se muestra el cursor ni el texto resaltado! ¿Alguien sabe cómo evitar esto? Prefiero no cambiar mi código a una versión especial de Honeycomb solo para corregir este problema.Sin cursor en editText en Honeycomb

He establecido explícitamente el elemento xml cursorVisible en true y luego lo configuré en true con setCursorVisible en el código pero eso no ayuda.

Gracias!

+0

Actualización: He probado la aplicación en Gingerbread y funciona correctamente allí también. El problema está limitado a todas las versiones de panal de abeja a 3.2. – Vic

+0

¿Está estableciendo el tipo de entrada en 0 (TYPE_NULL)? Si es así, tengo una solución que puede ayudarte. –

Respuesta

7

Añadir estos atributos a su EditarTexto, para hacer que el cursor parpadeante negro:

android:textColor="#000000" 
android:textCursorDrawable="@null" 

Es necesario si usted está utilizando el tema Holo. De: https://stackoverflow.com/a/9165217/1267112

+0

Además, android: textCursorDrawable es mínimo API 12 –

0

Puedes probar el siguiente fragmento de código.

public static void setCursorVisible(EditText editText, Context context) { 
    editText.setCursorVisible(true); 
    // sdk 
    // http://developer.android.com/guide/topics/manifest/uses-sdk-element.html 
    if (android.os.Build.VERSION.SDK_INT >= 12) {// Android 3.1.x API12 
                // HONEYCOMB_MR1 
     String filedNameString = "mCursorDrawableRes"; 
     // mCursorDrawableRes 
     Class<? extends EditText> editTextClass = editText.getClass(); 
     Class<? extends TextView> textViewClass = null; 
     if (editTextClass != null) { 
      textViewClass = (Class<? extends TextView>) editTextClass 
        .getSuperclass(); 
     } 
     if (textViewClass != null) { 
      Field mCursorDrawableField = null; 
      try { 
       mCursorDrawableField = textViewClass 
         .getDeclaredField(filedNameString); 
      } catch (NoSuchFieldException e) { 
       // TODO Auto-generated catch block 
       Log.i(TAG, "NoSuchFieldException"); 
       e.printStackTrace(); 
      } 
      if (mCursorDrawableField != null) { 
       mCursorDrawableField.setAccessible(true); 
       try { 
        mCursorDrawableField.set(editText, 0); 

       } catch (IllegalArgumentException e) { 
        Log.i(TAG, "IllegalArgumentException"); 
        e.printStackTrace(); 
       } catch (NotFoundException e) { 
        Log.i(TAG, "NotFoundException"); 
        e.printStackTrace(); 
       } catch (IllegalAccessException e) { 
        Log.i(TAG, "IllegalAccessException"); 
        e.printStackTrace(); 
       } 
      } 

     } 
    } 
Cuestiones relacionadas