2012-05-23 17 views
5

Sto lavorando con un testo di modifica per supportare le proprietà di grassetto, corsivo e sottolineato. Ho avuto successo dopo aver selezionato il testo e averlo reso in grassetto. Ora voglio rimuovere il grassetto dopo aver fatto clic sul pulsante Normale.Come espandere il testo selezionato in Edittext Android?

Typeface.NORMAL non funziona qui. Qualcuno può suggerire un'altra opzione.

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

Controlla questo post, vedrai il resto. http://stackoverflow.com/questions/37002177/how-to-bold-or-italic-or-underline-the-selected-text-in-edittext-programatically/42810064#42810064 – Bosco

+0

prova la soluzione in questo post http: //stackoverflow.com/questions/37002177/how-to-bold-or-italic-or-underline-the-selected-text-in-edittext-programatically/42810064#42810064 – Bosco

risposta

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

questa è una bella risposta +1. –

+0

Che funziona perfettamente –

+0

Qualcuno ha un indizio, perché basta impostare il tipo face su NORMAL non funziona? –

-1

utilizzare semplicemente:

Typeface.NORMAL 

si può controllare sul Android docs.

+1

Ho già inserito questo vassoio ma non funziona. – Nik88

-1

Simile a quello che è stato utilizzato in primo onClick() invece di s.setSpan (nuovo StyleSpan (android.graphics.Typeface.BOLD), startSelection, endSelection, 0); usa s.setSpan (new StyleSpan (android.graphics.Typeface.NORMAL), startSelection, endSelection, 0); nel secondo onclick().

+1

Ho già menzionato in questione che Typeface.NORMAL non funziona. – Nik88

+0

Ci scusiamo per questo, ma ho postato questa risposta prima di modificare la tua domanda. – Saurabh

Problemi correlati