2012-05-23 13 views
5

Estoy trabajando con un texto de edición para admitir las propiedades de negrita, cursiva y subrayado. Conseguí éxito después de seleccionar el texto y hacerlo en negrita. Ahora quiero eliminar el negrita después de hacer clic en el botón Normal.¿Cómo descifrar el texto seleccionado en Edittext Android?

Typeface.NORMAL no está trabajando aquí. ¿Alguien puede sugerir otra opción?

Button btnBold = (Button) findViewById(R.id.btnBold); 
     btnBold.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startSelection = etx.getSelectionStart(); 
       endSelection = etx.getSelectionEnd(); 


       Spannable s = etx.getText(); 
       s.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startSelection, endSelection, 0); 
      } 
     }); 


Button btnNormal = (Button) findViewById(R.id.btnNormal); 
     btnNormal .setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       **//What I have to do here.** 
      } 
     }); 
+0

Compruebe esta publicación, se dará cuenta del resto. http://stackoverflow.com/questions/37002177/how-to-bold-or-italic-or-underline-the-selected-text-in-edittext-programatically/42810064#42810064 – Bosco

+0

prueba la solución en esta publicación http: //stackoverflow.com/questions/37002177/how-to-bold-or-italic-or-underline-the-selected-text-in-edittext-programatically/42810064#42810064 – Bosco

Respuesta

7
Button btnNormal = (Button) findViewById(R.id.btnNormal); 
     btnNormal .setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Spannable str = etx.getText(); 
       StyleSpan[] ss = str.getSpans(selectionStart, selectionEnd, StyleSpan.class); 

     for (int i = 0; i < ss.length; i++) { 
      if (ss[i].getStyle() == android.graphics.Typeface.BOLD){ 
      str.removeSpan(ss[i]);   
      } 
     } 
    etx.setText(str); 

    } 
});  
+1

eso parece una respuesta genial +1. –

+0

Eso funciona perfectamente –

+0

Cualquiera tiene una pista, ¿por qué simplemente configurar el tipo de cara a NORMAL no está funcionando? –

-1

Utilice simplemente:

Typeface.NORMAL 

se puede comprobar en el Android docs.

+1

Ya he trayed esto pero no funcionaba. – Nik88

-1

Similar a lo que ha utilizado en primer onClick() en lugar de s.setSpan (nuevo StyleSpan (android.graphics.Typeface.BOLD), startSelection, endSelection, 0); use s.setSpan (new StyleSpan (android.graphics.Typeface.NORMAL), startSelection, endSelection, 0); en el segundo onclick().

+1

Ya he mencionado en cuestión que Typeface.NORMAL no está funcionando. – Nik88

+0

Perdón por eso, pero publiqué esta respuesta antes de que editaras tu pregunta. – Saurabh

Cuestiones relacionadas