EditText formato de cadena personalizado

Busqué todas las preguntas similares a mi problema pero no lo conseguí trabajando. Mi problema es este:

Quiero formatear una cadena en EditText mientras EditText . El formato es éste ( siempre es un número de 19 dígitos ):

012345 01 0123456789 0

Como puede ver, quiero agregar espacios cuando sean necesarios mientras el usuario está escribiendo. Sé que tengo que usar el TextWatcher pero todo lo que hago no consigo lo que quiero.

Editar :

Aquí está el código de mi último intento:

  @Override public void afterTextChanged(Editable s) { if(s.length() == 7 || s.length() == 10 || s.length() == 21){ editText.removeTextChangedListener(this); String newValue; newValue= s.insert((s.length()-1), " ").toString(); //Log.d("AFTER",newValue); editText.setText(newValue); editText.setSelection(newValue.length()); editText.addTextChangedListener(this); } } 

Aquí usted va con él.

main.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:digits="0123456789" android:inputType="number" /> </LinearLayout> 

MainActivity.java:

 public class MainActivity extends Activity { int textlength = 0; EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); editText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { String text = editText.getText().toString(); textlength = editText.getText().length(); if(text.endsWith(" ")) return; if(textlength == 7 || textlength == 10 || textlength == 21) { editText.setText(new StringBuilder(text).insert(text.length()-1, " ").toString()); editText.setSelection(editText.getText().length()); } }}); } } 

De esta manera, acabo de lograr añadir espacios entre los dígitos a intervalos particulares.

Nota: He añadido funciones adicionales a la edittext, de modo que sólo se pueden introducir números y al mismo tiempo el teclado numérico sólo aparece de forma predeterminada. Para más información sobre el camino para el tipo de entradas de usuario, esto podría ayudarle.

  • ¿Por qué el perro String.format de android es lento?
  • Texto de Android TextView Justify
  • Insignia dinámica HTML de la aplicación de Google Play
  • Cómo dar formato a la latitud y longitud GPS?
  • ¿Cómo parse la fecha en Java? cierta confusión en los formatos de fecha
  • Cambio del formato datepicker en android
  • La conversión al formato dalvik falló con error 1 con adt r17
  • Ordenación de símbolo de moneda de Android
  • La pista EditText desaparece con la gravedad
  • Formato de tarjeta SD en Android
  • Formato AndroidManifest.xml de Eclipse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.