2012-08-10 27 views
5

Quiero saber si hay algún método por el cual pueda eliminar el carácter específico del EditText. Deseo eliminar la carta de EditText especificando la posición en el texto de edición ¿Hay algo así como removeAt() para EditText?cómo eliminar el carácter de edittext?

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button b1=(Button)findViewById(R.id.button1); 
     final EditText ed1=(EditText)findViewById(R.id.editText1); 
     b1.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

      //i want something like this 
        ed1.removeAt(5); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 


} 

INFORMACIÓN ADICIONAL

el principal problema es que quiero hacer que el texto en negrita dentro EditarTexto pero no todo el texto. El texto que se escribe después de configurar el botón en negrita (en negrita está mi botón para alternar). bien aquí es el código

 ed1.setOnKeyListener(new OnKeyListener() { 

     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // TODO Auto-generated method stub 
      int i = 0; 

      switch(event.getAction()) 
      { 
      case KeyEvent.ACTION_UP: 
        if(bold.isChecked()) 
        { 
         i=ed1.getSelectionStart(); 

         ed1.append(Html.fromHtml("<b>"+ed1.getText().toString().charAt(i-1)+"</b>")); 

        } 
        return true; 

      } 
      return false; 
     } 
    }); 

el problema es que me sale un doble del carácter es el carácter normal y luego otra vez la negrita, así que quiero para eliminar que los caracteres normales especificando hay posición

+0

Esto podría ayudar: http://stackoverflow.com/questions/7661104/insert-character-between-the-cursor-position-in-edit-text – 0gravity

Respuesta

7

usted tiene que cambiar a la cadena en primer lugar porque getText vuelve editable, por ejemplo:

int charIndex; 
String text = ed1.getText().toString(); 
text = text.substring(0, charIndex) + text.substring(charIndex+1); 
ed1.setText(text); 

Para eliminar un carácter y mantener los caracteres en negrita el mismo:

ed1.setText((Spanned)ed1.getText().delete(indexStart , indexEnd)); 

Esto eliminará los caracteres del índice "indexStart" a "indexEnd -1". p. si usa delete (0,1); borrará el primer carácter.

Espero que ayude :)

+0

mira esta publicación si tomo mis datos de edición de texto en la cadena, el efecto en negrita se perderá por eso no puedo tomar los datos de edición de texto en la secuencia http: // stackoverflow .com/questions/11905850/quetion-continue – maddygoround

+0

@RathoreSunny ¡Esto debería hacer el truco! –

1

EditText es sólo como cualquier otro TextView, pero también se puede editar. Por lo tanto, puede utilizar el método getText(), almacenarlo como String, eliminar el carácter deseado y llamar al método setText(str) en el EditText para cambiar el texto.

+0

http: // stackoverflow.com/questions/11905850/quetion-continue – maddygoround

0

tener la aportación de la EditarTexto y almacenar en una cadena.

String temp = ed1.getText().toString(); 

Ahora manipule esta temperatura de cadena para eliminar el carácter en la posición deseada. (sugiero que use la función String.substring(..) para lograr esto.)

Por último, establezca la temperatura de cadena manipulada en EditText.

ed1.setText(temp); 
2

Mi implementación se da a continuación. Espero que será útil

int cursorPosition = mDialerEditText.getSelectionStart(); 
    if (cursorPosition > 0) { 
      mDialerEditText.setText(mDialerEditText.getText().delete(cursorPosition - 1, cursorPosition)); 
     mDialerEditText.setSelection(cursorPosition-1); 
    } 
Cuestiones relacionadas