Cursor no es visible en EditText cuando se agrega dinámicamente la vista

Tengo un TableLayout y la visión dinámica se agrega en la disposición. Siempre que la disposición tenga un cursor de EditText no es visible en EditText pero el cursor es visible encima del EditText que es TextView .

He añadido onClick evento, archivo XML para Edittext y Textview y archivo XML para el diseño principal.

Mi oyente de texto:

 textView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { textView.setSelection(textView.getText().toString().length()); textView.requestFocus(); textView.requestFocusFromTouch(); textView.setCursorVisible(true); return false; } }); 

Archivo XML:

  <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:scrollbars="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="10dp" android:focusable="true" android:focusableInTouchMode="false" android:text="@string/title_form_details" android:textSize="25dp" /> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fieldsContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical" android:shrinkColumns="1" android:stretchColumns="1" > </TableLayout> </LinearLayout> </ScrollView> 

TextView XML de TextView :

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical|left" android:paddingBottom="0dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="5dp" /> 

EditText XML de EditText :

 <?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/control" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="true" android:textColor="#000000" android:textCursorDrawable="@null" /> 

De forma dinámica estoy añadiendo TextView y en la fila siguiente estoy añadiendo Edittext vista, pero siempre que EditText clic en EditText , el cursor es visible en TextView .

Esta solución funcionó para mí.

 textView.setText("text"); textView.post(new Runnable() { @Override public void run() { textView.setSelection(textView.getText().toString().length()); } }); 

Está estableciendo la visibilidad del cursor en textview , por lo que es visible en TextView

Eliminar esta línea de su código

 textView.setCursorVisible(true); 

 textView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { textView.setSelection(textView.getText().toString().length()); textView.requestFocus(); textView.requestFocusFromTouch(); //textView.setCursorVisible(true); return false; } }); 

Y tratar de establecer la visibilidad a edittext

  edittext .setCursorVisible(true); 

Intente agregar un <requestFocus /> en su edittext. Tal vez funciona.

Intenta llamar a setTextIsSelectable dentro de onTouchListener

  editText.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { editText.setTextIsSelectable(true); return false; } }); 

Eliminar esta línea:

 textView.setCursorVisible(true); 

Entonces funciona.

Este error es uno de los más ridículos en Android, supongo …

Aquí es cómo lo manejé:

  public void addEditText(LinearLayout linearLayout, final View view) { final EditText editText = new EditText(getActivity()); linearLayout.addView(textView); linearLayout.addView(editText); Utils.runDelayed(new Callable() { @Override public Object call() throws Exception { if (editText.getText() == null || editText.getText().toString().isEmpty()) { editText.setText(""); editText.setSelection(editText.getText().toString().length()); editText.setCursorVisible(true); editText.setTextIsSelectable(true); editText.setInputType(InputType.TYPE_CLASS_TEXT); } return null; } }, 10); editText.setTextAppearance(R.style.LargeEditText); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }); } 

El ayudante:

 /** * Run delayed. * * @param callable the callable * @param delay the delay */ public static void runDelayed(final Callable callable, long delay) { final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { try { callable.call(); } catch (Exception e) { e.printStackTrace(); } } }, delay); } 
  • Cómo crear una tabla en Android con varias columnas?
  • Cómo combinar fila en una celda en la disposición de la tabla en android, dinámicamente?
  • ¿Cómo obtener el evento de clic de la fila de la tabla / elemento de la tabla?
  • Cómo dar frontera para tablerow en tablelayout en android?
  • Cómo establecer divisor entre columnas en tablelayout?
  • ListView o TableLayout?
  • ¿Es posible especificar la altura de TableRow?
  • ¿Cómo hacer un TableLayout desplazable?
  • Cómo configurar la columna de tabla en android
  • Disposición de respuesta de Android
  • Borde de elementos de la fila de tabla en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.