2015-10-30 14 views
5

Ich mag eine Funktion implementieren,Wie dynamisch die Textgröße in Android ändern

EditText Benutzer bei der Texteingabe, Sie Änderungen in Übereinstimmung mit der eingestellten Schriftgröße machen,

wie Google Text & Tabellen von Büro,

enter image description here

Nun fand ich einen Weg zu SpannableString, aber lesen Sie einige Beispiele scheinen nicht in der Lage meine Bedürfnisse zu erreichen

int index = input.getSelectionEnd(); 
SpannableString spann = new SpannableString(show_input); 
AbsoluteSizeSpan word_size = new AbsoluteSizeSpan(18,true); 
spann.setSpan(word_size, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
input.getText().insert(index, spann); 

Also gibt es eine Möglichkeit, es zu bieten?

+1

Ihre Frage ist nicht verständlich bitte geben Sie, was Sie wollen und was Sie haben. fügen Sie auch einen Code –

+0

hinzu Es ist kompliziert. Aber SpannableString wird für Sie arbeiten. Sie müssen nur ein bisschen brainstorming machen. – activesince93

+1

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

Antwort

4

Sieht aus wie Sie Größe des ausgewählten Textes ändern möchten:

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); 

Verwenden AbsoluteSizeSpan für die tatsächliche Größe oder RelativeSizeSpan für proportionale Größe zu ändern.

+0

Danke, ich kann es versuchen. –

+0

Bitte als Antwort markieren, wenn es Ihnen geholfen hat. – lewkka

0

I trird TextWatcher() hinzufügen,

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); 
     } 
    } 
}); 

Aber dieses Programm stürzt ab ...

dann versuche ich

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

zu tun, aber so angezeigt werden können Tun ...

Deshalb?

+0

In welcher Zeile ist es abgestürzt? Füge Crashlog hinzu. – lewkka