2015-10-30 21 views
5

Voglio realizzare una funzione,Come modificare dinamicamente la dimensione del testo in Android

utente EditText durante l'immissione del testo, è possibile apportare modifiche in conformità con la dimensione del font set,

come Google Docs ufficio,

enter image description here

Ora ho trovato un modo per SpannableString, ma leggere alcuni esempi sembrano in grado di raggiungere i miei bisogni

Quindi c'è un modo per fornirlo?

+1

la tua domanda non è comprensibile, si prega di fornire quello che vuoi e quello che hai. aggiungi anche del codice –

+0

È complicato. Ma SpannableString funzionerà per te. Hai solo bisogno di fare un brain storming. – activesince93

+1

spann.setSpan (word_size, startStringPosition, endStringPosition, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); – activesince93

risposta

4

Sembra che si desidera modificare le dimensioni del testo selezionato:

int start = editText.getSelectionStart(); 
int end = editText.getSelectionEnd(); 
Spannable text=(Spannable)editText.getText(); 
text.setSpan(new AbsoluteSizeSpan(NEW_TEXT_SIZE, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
editText.setText(text); 

Usa AbsoluteSizeSpan cambiare per dimensioni reali o RelativeSizeSpan per dimensioni proporzionali.

+0

Grazie, posso provarlo. –

+0

Per favore, segna come risposta se ti ha aiutato. – lewkka

0

ho trird aggiungere TextWatcher(),

input =(EditText)findViewById(R.id.Input_EditText); 
input.addTextChangedListener(new TextWatcher() 
{ 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {  
    } 
    public void afterTextChanged(Editable s) 
    { 
     int index = input.getSelectionEnd(); 
     String nowstr; 

     if(index==0) 
     { 
      //do nothing 
     } 
     else 
     { 
      nowstr = s.toString(); 
      char nowstr_array[] = nowstr.toCharArray(); 
      show_input = String.valueOf(nowstr_array[index-1]); 

      SpannableStringBuilder spann = new SpannableStringBuilder(show_input); 
      AbsoluteSizeSpan word_size = new AbsoluteSizeSpan(40,true); 
      spann.setSpan(word_size, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
      input.getText().insert(index, spann); 
     } 
    } 
}); 

Ma questo programma andrà in crash ...

allora, cerco di fare

 Toast.makeText(MainActivity.this, spann, Toast.LENGTH_SHORT).show(); 
     //input.getText().insert(index, spann); 

ma in questo modo è possibile visualizzare ...

Ecco perché?

+0

Quale linea si è arrestata? Aggiungi crashlog. – lewkka

Problemi correlati