Как динамически изменять размер текста в Android
Я хочу реализовать функцию,
EditText пользователь при вводе текста, вы можете внести изменения в соответствии с установленным размером шрифта,
например, Google Docs of Office,
теперь я нашел способ SpannableString, но читать некоторые примеры, похоже, не могут достичь моих потребностей
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);
Итак, есть ли способ предоставить его?
2 ответов
похоже, вы хотите изменить размер выделенного текста:
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);
использовать AbsoluteSizeSpan для изменения фактического размера или RelativeSizeSpan для пропорционального размера.
Я третий, чтобы добавить 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);
        }
    }
});
но эта программа рухнет...
затем я пытаюсь сделать
        Toast.makeText(MainActivity.this, spann, Toast.LENGTH_SHORT).show();
        //input.getText().insert(index, spann);
но это можно отобразить...
это почему?
 
            