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 funciona android: shrinkColumns y android: stretchColumns?
  • Cómo crear exactamente botones cuadrados que rellenan el ancho de la pantalla
  • Cómo combinar fila en una celda en la disposición de la tabla en android, dinámicamente?
  • Grilla de datos completamente funcional en Android
  • Rellene TableLayout con android: layout_weight de forma programática
  • implementar android: stretchColumns = "*" programatically en Android
  • Línea de encabezado de TableLayout de Android
  • ListView o TableLayout?
  • Líneas de borde para celdas en GridLayout, TableLayout o GridView?
  • TableRow no envuelve TextView
  • Disposición de respuesta de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.